2011-12-08 5 views
2

Comment ajouter un événement à un élément qui a été chargé par AJAX.Ajout d'un événement à un élément généré dynamiquement

jQuery a live, mais quel est l'équivalent de Mootools?

Par exemple:

window.addEvent('domready', function() { 
    // some code which loads new elements by ajax 

    // Filter 
    $$('.filterButton').addEvent('click', function(event) { 
     alert('wow'); 
    }); 
}); 
+0

duplication possible de [comment implémenter un événement jQuery live bind sur mootools?] (Http://stackoverflow.com/questions/2107892/how-to-implement-a-jquery-live-bind-event-on- mootools). Cherchez-vous avant de poster une question? Mettre les mots «mootools jquery live equivalent» dans la boîte de recherche de google vous donne la réponse tout de suite. Et sans surprise, c'est sur StackOverflow :-) Je veux dire qu'il faut environ 10 secondes pour le faire, probablement moins si vous avez un raccourci pour ouvrir et rechercher google. –

+0

cette réponse est très obsolète, aussi bien qu'il a demandé. –

Répondre

7

les Mootools équivalent est par delegatorElement.addEvent("event:relay(mask)", fn);event peut être standard bouillonnant (cliquez, mouseover/out/congé/entrer, etc.) ou non-bulles (flou, mise au point, changer, etc.) .

dans votre code qui va comme:

$(document.body).addEvent("click:relay(.filterButton)", function(event, element) { 
    console.log(event, element === this); // event obj, true 
}); 

il est préférable d'ajouter l'événement à un élément plus haut le Royaume, comme document.id("delegatorId")

plus ici:

http://mootools.net/docs/core/Element/Element.Delegation

gardez à l'esprit, la délégation d'événements est dans mootools-core depuis 1.4 - il était dans mootools - plus avant, ce qui signifie une custo m construire.

Questions connexes