Double Possible:
jQuery 1.7 - Tournage live() sur()Selon le jQuery API (http://api.jquery.com/on/) la fonction "live" est obsolète, il est recommandé d'utiliser le " on " à la place. Mais lorsque je remplace "en direct" avec " on " dans mon code, jQuery peut pas trouver plus tard ajouté des éléments plus:
Cela fonctionne (mais est déconseillée):
$('li.bibeintrag').live('click', function(){ alert('myattribute =' + $(this).attr('myattribute')); });
Ceci est un exemple de l'API pour les "on":
$("#dataTable tbody tr").on("click", function(event){ alert($(this).text()); });
Quand j'ai modifier mon code pour ce ("live", remplacé par "sur"), il ne fonctionne plus (jQuery ne trouverez pas plus tard ajouté des éléments (par exemple avec l'ajout)):
$('li.bibeintrag').on('click', function(){ alert('myattribute =' + $(this).attr('myattribute')); });
Ce que je fais mal? Quelqu'un peut-il aider, s'il vous plaît?
Réponses
Trop de publicités?jQuery live, lorsqu'il est vu à travers l' $.on
style aurait ressemblé à ceci:
$(document).on("click", "li.bibeintrag", function(){
});
Il serait d'écouter cliquez sur événements en document
de niveau, et de déterminer si leur cible correspondait à la deuxième paramètre de $.on
. Vous et moi sommes encouragés à le faire nous-mêmes, mais plutôt que d'écouter au niveau du document, nous voulons vous écouter, beaucoup plus proche de l'élément lui-même (si l'événement n'a pas besoin de se propager trop loin avant de manipulation).
Puisque vous êtes de répondre aux clics sur un li
, écoutez, au niveau de laquelle les éléments du parent:
$("ul#myList").on("click", "li.bibeintrag", function(){
/* Respond */
});
Gardez à l'esprit que sans fournir le deuxième paramètre de $.on
, le gestionnaire d'événement est lié à l'élément lui-même, ce qui signifie que vous n'obtenez pas le comportement de l' $.live
qui permettrait de réagir dynamiquement des éléments ajoutés.