我正在使用jQuery实时搜索插件,需要将其绑定到类的所有实例。我的班级实例可能是也可能不是动态的。
我知道我可以通过将它嵌套在jQuery Live函数中来完成它与动态类实例的绑定,E.G $(".myLink").live(click function(){});
但是,我还需要非动态类来进行绑定。
如何在不定义liveSearch绑定两次的情况下完成此操作? (一旦文档准备好了静态元素,一旦在动态元素的单击处理程序中)。
这是我的liveSearch代码,不确定是否重要。
$(".myClass").liveSearch({
url: 'foo.php',
id: 'liveSearchID',
parent: '.myParent',
});
非常感谢。
答案 0 :(得分:2)
您可以使用jQuery .on()
将liveSearch
绑定到呈现(非动态)或将来的元素,例如:
$("#parentContainer").on("click", ".myClass", function(){
$(this).liveSearch({
// options
}); // liveSearch
}); // on
注意您必须将.on()
应用于选择器.myClass
的父容器,然后传递事件{{1}作为后代选择器和处理程序。
参见 DEMO
.myClass
需要jQuery 1.7 +
编辑(2012年12月15日 - 太平洋时间下午4:13):
旧版jQuery的用户应优先使用.on()
而不是.delegate()
...所以只需通过.live()
调整您的代码(仍然将.delegate(selector, eventType, handler)
应用于父级容器)喜欢:
.delegate()
使用$("#parentContainer").delegate(".myClass", "click", function() {
$(this).liveSearch({
// options
}); // liveSearch
}); // delegate
查看新的 DEMO (需要jQuery v1.4.2 +)