2010-11-23 71 views
0

我正在使用名为云缩放的插件。问题在于,当DOM准备就绪时,它会附带任何与class="cloud-zoom"有关的东西。我的问题是我不会在渲染时将该类附加到DOM元素。它是动态附加的。所以我需要以某种方式混合.live()使它工作:如何将jQuery .live()添加到这段代码中?

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

.live()需要一个事件。我不知道如何在任何元素上使用类cloud-zoom注入到DOM中指定调用CloudZoom()的事件。

回答

5

您不能在这里使用.live(),它以一种非常不同的事件驱动的特定方式工作。有关动态元素的插件有2个选择,要么重新运行时,新的元素进来,例如在你的Ajax success处理程序,或使用the .livequery() plugin,像这样的代码:

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

我想可能是这样的:

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

好吧,没关系,它期望的事件。我正在考虑jQuery Livequery插件,它接受匿名函数而无需事件

+0

`.live()`不能像这样工作,它是事件驱动的。 – 2010-11-23 12:46:09

+0

这是行不通的。 – Gidon 2010-11-23 12:47:50

0

你可以,如果尝试这种以上不起作用:

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

});

只需在最后添加触发器点击,为我工作。