2010-12-14 29 views
2

Supposons que vous ayez une page appelée /start.html, et que vous ayez dans cette page une fonction enveloppée qui est appelée lorsque le corps se charge.comment utiliser jquery .delegate() avec la fonction enveloppée sur le contenu ajaxed?

function eatApples() { 
// some code 
} 
function eatOranges() { 
// some code 
} 
function eatFruit() { 
$(eatApples()); 
$(eatOranges()); 
} 
// call the eatFruit function on page load 
$(eatFruit()); 

Supposons maintenant que vous avez également une page appelée /end.html, et cette page contient ajaxed. En outre, vous voulez appeler le eatFruit() sur ce contenu ajaxed.

Est-ce possible avec les fonctions de jQuery ou fonctions? http://api.jquery.com/delegate/

Répondre

2

tout d'abord votre code devrait être

function eatApples() { 
// some code 
} 
function eatOranges() { 
// some code 
} 
function eatFruit() { 
    eatApples(); 
    eatOranges(); 
} 
// call the eatFruit function on page load 
$(eatFruit); 

à moins que les eatApples et eatOranges fonctions de retour en conséquence.

Maintenant, si le end.html est appelé avec ajax, jquery permet l'exécution des gestionnaires de rappel lorsque le contenu ajax est chargé.

La fonction de délégué et de direct permet de contrôler les événements qui se produisent à la suite d'une interaction de l'utilisateur.

Si le nouveau contenu répond aux critères spécifiés lors de l'utilisation du délégué ou des méthodes live, alors oui, il fonctionnera avec le contenu ajax chargé.

Par exemple, si vous définissez un

$('.aclass').live('click',function(){ 
    alert('clicked'); 
}); 

alors si le contenu chargé à partir d'un élément ajax ont la classe aclass il déclenche également l'alerte lorsque vous cliquez dessus.

Si vous pouviez fournir plus d'informations, vous obtiendrez une réponse plus détaillée.

+0

Merci. J'ai vu le poste à http://stackoverflow.com/questions/2527489/jquery-plugins-not-working-on-ajaxed-content à propos de l'attachement du code à un gestionnaire de rappel, et c'est peut-être ce que je vais devoir faire . Mais parce que je vais utiliser délégué pour la plupart des autres fonctions liées au contenu ajaxed, j'espérais qu'il pourrait être utilisé pour un certain type d'événement «load». Apparemment non? – mg1075

+1

Vous pouvez utiliser les [** Global ** Ajax Event Handlers] (http://api.jquery.com/category/ajax/global-ajax-event-handlers/) pour cela. –

+0

Global Ajax Event Handlers - bien! N'avait pas examiné ceux avant ... – mg1075