2010-11-23 28 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');  

});

只需在最後添加觸發器點擊,爲我工作。