如何将jQuery .live()附加到此代码片段?

时间:2010-11-23 12:40:08

标签: javascript jquery

我正在使用一个名为云缩放的插件。问题是,当DOM准备就绪时,它会附加到class="cloud-zoom"的任何内容。我的问题是我没有在渲染时将该类附加到DOM元素。它是动态附加的。因此,我需要以某种方式将.live()与它混合使其工作:

$(document).ready(function () {
    $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom();
});

.live()需要一个事件。我不确定如何在任何使用类cloud-zoom注入DOM的元素上指定一个名为invoke CloudZoom()的事件。

3 个答案:

答案 0 :(得分:5)

你不能在这里使用.live(),它以一种非常不同的事件驱动的特定方式工作。对于动态元素上的插件,有两个选项,要么在新元素进入时重新运行此代码,例如在ajax success处理程序中,要么使用the .livequery() plugin,如下所示:

$(document).ready(function () {
    $('.cloud-zoom, .cloud-zoom-gallery').livequery(function() {
      $(this).CloudZoom();
    });
});

答案 1 :(得分:0)

我认为它可能是这样的:

$(document).ready(function () {
    $('.cloud-zoom, .cloud-zoom-gallery').live(function(){
        $(this).CloudZoom();
    });    
});

好的,没关系,它期待一个事件。我在考虑jQuery Livequery插件,它接受没有事件的匿名函数

答案 2 :(得分:0)

如果上述方法不起作用,您可以试试这个:

$(document).ready(function () {
$('.cloud-zoom, .cloud-zoom-gallery').live(function(){
    $(this).CloudZoom();
}).trigger('click');    

});

只需在最后添加触发器点击,对我有用。