Html () de jQuery supprime-t-il toutes les données attachées aux éléments remplacés?

Je présente une interface à onglets avec l'aide de jQuery. Lorsque vous cliquez sur un onglet, un appel ajax remplacera tous les html par un élément $(".content") avec le nouveau html, en utilisant quelque chose comme

$(".content").html(response);

Quand je fais cela, sont-ils tous les événements jquery et les fonctions qui sont attachés à des éléments à l'intérieur du .content div supprimé? Est-il acceptable de déclencher ces événements et de fonctionner après avoir remplacé le HTML? Si je clique sur les onglets 324523452354 fois, cela fera-t-il dupliquer les données jQuery à chaque fois?

Oui. Ils seront supprimés. Vous pouvez utiliser l'événement en direct pour joindre à des éléments qui n'existent pas encore.

  $(".myElementClass").live("click", function (e) { e.preventDefault(); //do stuff }); 

Dans ce cas, cette fonction sera toujours appelée sur myElement peu importe quand elle sera injectée dans le DOM.

Tout le code HTML à l'intérieur de votre sélecteur est remplacé par le paramètre que vous passez, ce qui implique qu'il est complètement retiré du DOM. Signification si vous avez:

 <div id="mine"> <ul> <li>One thing</li> </ul> </div> 

Et je fais un appel en tant que tel:

 $('div#mine').html("hey"); 

Mon HTML sera alors:

 <div id="mine"> hey </div> 

Comme vous pouvez le voir, il est complètement supprimé et tous ses événements liés ne signifient rien. Si vous utilisez plutôt la liaison jQuery.live (), les éléments qui n'existent pas encore peuvent avoir des événements associés à eux. Cela signifie que si vous ajoutez des éléments au DOM, les événements fonctionneront toujours, sans que vous ayez besoin de renvoyer si vous ajoutez plus ou de les remplacer.

**.live** événements **.live** sont liés au niveau du document, lisez le document suivant qui est vraiment utile

http://www.bennadel.com/blog/1751-jQuery-Live-Method-And-Event-Bubbling.htm