Javascript jquery使用.live()函数附加插件
我想在Javascript jquery使用.live()函数附加插件,javascript,jquery,Javascript,Jquery,我想在div元素上附加一个带有.live()的jquerycycle插件,menas: 目前我正在做: $("div").cycle(); 但我想做: $("div").live("which event ?", function() { $(this).cycle(); }); 我如何才能做到这一点?首先,.live()已被弃用。建议您对较旧的jQuery使用.delegate(),对1.7版使用.on()+ 如果您正在将插件加载到动态元素,为什么不在加载元素时附加它们呢 例如: $.ge
div元素上附加一个带有.live()
的jquerycycle插件,menas:
目前我正在做:
$("div").cycle();
但我想做:
$("div").live("which event ?", function() { $(this).cycle(); });
我如何才能做到这一点?首先,.live()
已被弃用。建议您对较旧的jQuery使用.delegate()
,对1.7版使用.on()
+
如果您正在将插件加载到动态元素,为什么不在加载元素时附加它们呢
例如:
$.get(url,data,function(html){
$(html) //wrap with jQuery
.appendTo(somewhere) //add somewhere
.cycle(html); //add cycle
});
是否要自动触发事件?
如果是,这就是解决方案:
将自定义处理程序应用于元素:
$("div").live("yourEvent", function() { $(this).cycle(); });
然后可以使用trigger()-函数触发此事件:
$("div").trigger("yourEvent");
你想做的是不可能的。在对象上调用jQuery方法与事件不同,因此不能以“实时”方式进行操作。不幸的是,没有绑定到意外事件项的好方法,我在这里讨论事件。相反,像.live
(或.on
,因为前者已被弃用)这样的方法对鼠标和键盘事件更有用(一般来说)
自动将插件应用于所有div.cycleMe
元素的最佳方法是将该逻辑放在函数的callbak方法中,将这些新元素加载到页面中。例如,如果您有一个$.ajax
的实例,该实例会拉入新数据:
$.ajax({
url: "/getSlider",
success: function( data ) {
$("#sliders")
.append(data).find("div.cycleMe:not(.active)")
.addClass("active").cycle();
}
});
在我们的滑块加载到#滑块
后,我们的回调函数被执行。它查找所有没有.active
类的.cycleMe
元素,添加该类,然后对它们调用.cycle()
方法。这里的.active
类是为了确保我们不会在以前加载的滑块上再次调用cycle方法。为什么要使用(jQuery 1.7及更高版本中不推荐使用)?在jQuery的早期版本中,您可能应该使用或。顺便问一下,您的问题的上下文是什么?他很可能试图将插件附加到当时不存在的元素,这与事件委派无关(因此与.live
无关)。这是对.live
功能的常见误解。您可以用$(“div”).cycle()替换此代码
,也就是说,当您调用$(“div”).trigger(“addCycle”)
时,您最好调用$(“div”).cycle()代码>嗯。。是的,但他想知道它是怎么工作的还是我弄错了什么?我不认为如果你手动调用trigger
为什么会被接受,这怎么会是自动的呢?它使用不推荐使用的方法和手动事件调用?这不是OP的问题所指的。