对于相同的DOM类不同的点击行为

我有类似的东西:

<div id="ajaxContentLoader"> <a class="doSomething">do something</a> </div>

$('a.doSomething').click(function(e) { e.preventDefault(); doSomething(please); return false; });

现在,奇怪的事情(至少对我来说)是,如果a.doSomething超出ajaxContentLoader它DoSomething的每次被点击(这是好的),但如果是内部ajaxContentLoader,以及与一些内容代替,然后与.append reappended(); 将不再工作(这是坏的)。

搞什么鬼?

--------------解决方案-------------

live ,而不是.click()

$('a.doSomething').live('click', function(e) {
e.preventDefault();
doSomething(please);
return false;
});

live来代替:

$('a.doSomething').live('click', function(e) {
e.preventDefault();
doSomething(please);
return false;
});

此刻就是你覆盖a.doSomething有附加事件处理程序的元素。 您需要重新连接时,新元素添加到DOM事件处理程序; 幸运的是jQuery的有live()函数来为你做这个。

你将需要使事件处理live

$('a.doSomething').live("click", function(e) {
e.preventDefault();
doSomething(please);
return false;
});

事件处理程序绑定到DOM元素。 当您从DOM中删除,事件处理程序是没有更多的。 当您添加回来,这是一个新的元素,并且没有事件处理程序。 live显示器的选择匹配补充DOM和事件处理程序适用于那些去做。 从jQuery文档:

附加一个处理程序的事件为当前选择在现在和将来匹配其中,所有元素。

你需要使用的live()函数来绑定jQuery中点击呼叫:

$('a.doSomething').live('click',function(e) {
e.preventDefault();
doSomething(please);
return false;
});

.live()文档

分类:jQuery的 时间:2015-03-15 人气:0
本文关键词: jQuery的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.391 (s). 10 q(s)