2011-06-07 28 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