在DHTML之后,jQuery click()不会保留

时间:2011-02-25 14:25:19

标签: jquery dhtml

我正在使用缓存进行花哨的ajaxy dhtml。在我ajax下载感兴趣的页面后,我将内容存储在变量数组

HistoryCache[url].load(url, handleRSX);

(这部分工作正常)

之后我执行链接修复程序:

$('a', HistoryCache[url]).click(...)

...是将普通链接转换为我的ajaxy调用的代码。

完成所有这些操作后,我需要.append()将我的新内容发送到专门用于保存新内容的div。在追加I .remove()之前,之前有任何内容。

问题:当请求的网址位于我的HistoryCache时,我没有.load()它,我也没有通过.click()修复这些链接。我只需将缓存中的内容放入我的持有者中。此时链接已修复,实际上将浏览器更改为预期的链接,而不是调用我的函数。

问题:为什么.click().removed()并重新.append()之后不会保留在存储的缓存数组中?


忘记提及我已通过将点击覆盖更改为原生HTML this.onclick = function...而不是$(this).click(function(){});来解决此问题

1 个答案:

答案 0 :(得分:4)

.remove()上有意删除所有附加的jQuery事件以防止内存泄漏。如果没有这样做,jQuery会以一种糟糕的方式泄漏内存。

要使用jQuery解决此问题,您可以使用.live().delegate()。两者都通过在DOM上传播事件而不是绑定元素(实时文档和委托情况下指定的元素),并在删除和添加后工作。