jQuery .live() vs .sur() méthode pour ajouter un événement de clic après le chargement dynamique de code html

Je suis à l'aide de jQuery v. 1.7.De 1 où la .live() la méthode est apparemment obsolète.

Le problème que j'ai est que lorsque le chargement dynamique de code html sur un élément à l'aide de:

$('#parent').load("http://..."); 

Si j'essaie d'ajouter un événement click ensuite, il ne doit pas s'inscrire à l'événement en utilisant une de ces méthodes:

$('#parent').click(function() ...); 

ou

//according to documentation this should be used instead of .live()
$('#child').on('click', function() ...); 

Quelle est la bonne façon d'obtenir cette fonctionnalité? Il semble que pour travailler avec .live() pour moi, mais je ne devrais pas être à l'aide de cette méthode. Notez que #enfant est chargé dynamiquement élément.

Grâce.

  • Pourquoi dites-vous "soi-disant obsolète"? Ne croyez-vous pas les docs?
  • Ce n'est pas soi-disant obsolète: il est obsolète. Si vous regardez le jQuery doco pour .live() il vous indique la façon de réécrire les utilisations existantes de .live() à utiliser .delegate() ou .on() (selon que vous êtes sur la version 1.7+ ou pas). Notez cependant que si vous ajoutez un gestionnaire avec .click() "après", comme vous le mentionnez, c'est à dire, après le chargement dynamique des éléments, il devrait fonctionner - le seul problème est d'essayer d'attribuer avec .click() avant de les charger dynamiquement des éléments.
  • J'ai changé le texte "apparemment", car c'est en gros ce que je voulais dire. De toute façon, je comprends maintenant que, évidemment, depuis le .load() de l'événement est asynchrone, puis le n ° de l'élément enfant ne pourrait sûrement être reconnu dans le gestionnaire de succès, qui a du sens.
  • Double Possible de liaison d'Événements sur créer dynamiquement des éléments?
InformationsquelleAutor Sean Thoman | 2012-01-06