jquery用.live()函数附加插件

时间:2012-06-03 12:42:13

标签: javascript jquery

我想在cycle plugin .live()附加一个jquery div element$("div").cycle(); ,menas:

目前我在做:

$("div").live("which event ?", function() { $(this).cycle(); });

但我想这样做:

{{1}}

我该怎么做?

4 个答案:

答案 0 :(得分:2)

您想自动触发事件吗? 如果是,这就是解决方案:

将自定义处理程序应用于元素:

$("div").live("yourEvent", function() { $(this).cycle(); });

然后你可以用trigger() - function:

激活这个事件
$("div").trigger("yourEvent");

答案 1 :(得分:1)

不幸的是,没有好方法绑定到惊喜的项目,我在这里事件。相反,像.live(或.on这样的方法,因为前者已被弃用)对于鼠标和键盘事件(一般来说)更有用。

自动将插件应用于所有div.cycleMe元素的最佳方法是将该逻辑放在函数的callbak方法中,将这些新元素加载到页面中。例如,如果您有$.ajax的实例提取了新数据:

$.ajax({
    url: "/getSlider",
    success: function( data ) {
        $("#sliders")
            .append(data).find("div.cycleMe:not(.active)")
                .addClass("active").cycle();
    }
});

将滑块加载到#sliders后,执行回调函数。它找到没有.cycleMe类的所有.active个元素,添加该类,然后针对它们调用.cycle()方法。这里的.active类是为了确保我们不再在以前加载的滑块上调用循环方法。

答案 2 :(得分:0)

首先,.live()已弃用。建议您使用.delegate()表示较旧的jQuery,.on()表示版本1.7 +

如果您要将插件加载到动态元素,为什么不在元素加载时附加它们?

示例:

$.get(url,data,function(html){
    $(html)                  //wrap with jQuery
        .appendTo(somewhere) //add somewhere
        .cycle(html);        //add cycle
});

答案 3 :(得分:0)

你想做的事是不可能的。在对象上调用jQuery方法与事件不同,因此您无法以“实时”方式执行此操作。