Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery使用.live()函数附加插件_Javascript_Jquery - Fatal编程技术网

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()
的jquery
cycle插件,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的问题所指的。