Je suis en train de faire des ajouts dhtml avec la mise en cache. Après avoir ajax-télécharger une page d'intérêt, je stocke le contenu dans un tableau de variablesjQuery click() ne reste pas après DHTML
HistoryCache[url].load(url, handleRSX);
(cette partie fonctionne très bien)
Ensuite j'effectuer un lien fixatrice:
$('a', HistoryCache[url]).click(...)
Où ...
est le code qui convertit un lien normal à mon appel ajaxy.
Après tout cela, j'ai besoin de .append()
mon nouveau contenu à un div
qui est spécialement conçu pour contenir les nouveaux éléments. Avant d'ajouter I .remove()
quel que soit le contenu était là avant.
Problème: Lorsque l'URL est dans mon HistoryCache
je ne .load()
, et je ne fixe pas les liens via .click()
. Je prends simplement le contenu dans la cache et le mets dans mon support. À ce stade, les liens sont et non fixe, et en fait changer le navigateur pour le lien prévu plutôt que d'appeler ma fonction.
Question: Pourquoi le .click()
ne reste dans le tableau de cache stocké après son été .removed()
et re .append()
ed?
oublié de mentionner que j'ai résolu en changeant mon clic override au code HTML de this.onclick = function...
natif au lieu de $(this).click(function(){});
Merci ne le savais pas! jQuery suggère également [.detach()] (http://api.jquery.com/detach/) – Mikhail
Sur une note de côté ... pouvez-vous fuir la mémoire dans le bon sens? – Mikhail
@Mikhail - Je suppose que non. La fuite qui se produirait avec les événements liés à jQuery est plutôt circulaire, mais elle conserve les objets DOM ainsi que leurs événements en vie. – justkt