我正在尝试将 hoverIntent 插件添加到我页面上的元素中,但是稍后会将一些元素添加到DOM中,这意味着我必须将插件绑定到将来的元素。你是怎样做的?我已经在SO上看过几次相同的问题了,但是没有人有明确的解决方案吗?
答案 0 :(得分:9)
使用“选择器”参数进行事件委派。
$('#PARENT').hoverIntent({
over: function() {
console.log($(this));
},
out: function(){
console.log($(this));
},
selector: '.CHILD'
});
答案 1 :(得分:2)
jQuery中没有支持这样做;它是插件本身必须支持的东西。最常见的方法是在添加新内容后简单地重新初始化插件;这通常不是问题。
另一种选择是使用liveQuery
plugin,并执行类似的操作;
$('yourSelector').livequery(function () {
$(this).hoverIntent({
// blah
});
});
答案 2 :(得分:0)
实现此目的的最佳方法是在向页面添加新元素时引发自定义事件。然后,此事件的订阅者可以调用相应的hoverIntent初始化程序。
mutation observers将提供更多本机支持,但浏览器支持目前仅为零。
收听DOMSubtreeModifed
事件并不可靠,会导致严重的性能问题。
答案 3 :(得分:0)
尝试更改你的jquery结构;
ABC = {
init: function() {//all function names goes here
ABC.myFunction1();
ABC.myFunction2();
ABC.myFunction3();
},
myFunction1: function() {
//code
},
myFunction2: function() {
//code
},
myFunction3: function() {
//code
}//dont put comma last one
}
$(function() {
ABC.init();//calls all functions after everything is initialized and ready.
});