2011-06-07 27 views
1

我使用jcrop jQuery的裁剪圖像。要使用它,我正在使用$(function(){ $('#jcrop').Jcrop(); });如何使用Jcrop()對DOM的jQuery在未來產生的?

我的問題是,所述目標元件#jcrop使用AJAX生成。所以當我使用上面的代碼時,它不能識別DOM元素。

如何更改代碼以使其與.live()一起使用?

+0

您是否檢出了dojo.Deferred接口? – 2011-06-07 15:53:41

+0

對不起。我不知道Dojo是什麼? – ptamzz 2011-06-07 15:59:10

回答

4

Delegate是到的替代方案。 live()方法,是去是推薦的方式。委託您的事件在加載動態#jcrop元素時運行:

$("body").delegate("#jcrop", "load", function(){ 
    $(this).Jcrop(); 
}); 
+0

我在這裏有點困惑。 'load'事件是DOM'#jcrop'而不是'selector'這裏的? – ptamzz 2011-06-07 16:15:49

+1

負載事件適用於動態「#jcrop」元素。我們只使用'body',因爲我們知道它最終可能包含'#jcrop'。所以真的,你可以用任何其他包含'#jcrop'的元素替換'body'。它不過是一個永遠不會改變的容器元素,我們可以安全地將事件委託給。 – BumbleB2na 2011-06-07 16:18:57