如何仅使用jQuery将事件处理程序附加到新添加的元素?
有些对象是我附加了一些事件的对象。 经过一段时间后,我创建了更多的这些项目,我希望它们也被附加到相同的事件中 如果使用jQuery选择器选择元素并将处理程序附加到事件,则较旧的对象将多次将相同的处理程序附加到其事件如何仅使用jQuery将事件处理程序附加到新添加的元素?,jquery,Jquery,有些对象是我附加了一些事件的对象。 经过一段时间后,我创建了更多的这些项目,我希望它们也被附加到相同的事件中 如果使用jQuery选择器选择元素并将处理程序附加到事件,则较旧的对象将多次将相同的处理程序附加到其事件 这是什么方法? 也许你应该考虑添加处理程序。这样,您只需声明一次处理程序,它现在和将来对所有匹配的元素都有效 如果由于某种原因,这是不可接受的,那么快速而肮脏的解决方案将是(例如单击处理程序): 更好的解决方案(同样,没有live)是插件。阅读文档或使用它。最简单的方法是将处理程序绑
<>这是什么方法? 也许你应该考虑添加处理程序。这样,您只需声明一次处理程序,它现在和将来对所有匹配的元素都有效 如果由于某种原因,这是不可接受的,那么快速而肮脏的解决方案将是(例如
单击处理程序):
更好的解决方案(同样,没有live
)是插件。阅读文档或使用它。最简单的方法是将处理程序绑定到与给定选择器匹配的现有和任何可能的未来元素。为事件使用名称空间,如下所示:
$('a').unbind('click.customNS');
$('a').bind('click.customNS', function(){...});
$('a').bind('click.customNS',function(){…})
然后,每当创建新元素时,取消绑定所有名称空间事件,然后重新绑定,如下所示:
$('a').unbind('click.customNS');
$('a').bind('click.customNS', function(){...});
或者,使用.live('click',function(){..})代码>,它将自动将事件“绑定”到任何新创建的元素,匹配jQuery选择器。但是,这不适用于不符合CSS的选择器。(例如jQuery特殊的父选择器)我想这样说:
$(".element").unbind("click").live("click", function () {
// ...
});
您可以解除旧的“单击”事件处理程序的绑定,并使用live
仅绑定旧的和新的事件处理程序一次。您不能在创建处理程序时将它们绑定到domeElement吗?@dhinesh,如果是这样,他可以使用其他成员指向的live
,但是我认为即使是live
也不能真正解决他/她的问题,嘿,Odys正确的方法是为旧的事件处理程序解除绑定,然后为所有人绑定live
。