jQuery.on() - 如何在加载元素后立即初始化

时间:2012-07-05 10:26:15

标签: jquery hoverintent jquery-on

我正在尝试将 hoverIntent 插件添加到我页面上的元素中,但是稍后会将一些元素添加到DOM中,这意味着我必须将插件绑定到将来的元素。你是怎样做的?我已经在SO上看过几次相同的问题了,但是没有人有明确的解决方案吗?

4 个答案:

答案 0 :(得分:9)

使用“选择器”参数进行事件委派。

$('#PARENT').hoverIntent({
    over: function() {
        console.log($(this));
    },
    out: function(){
        console.log($(this));
    },
    selector: '.CHILD'
});

来源:hoverIntent Documentation

答案 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.
});