jQuery:如何wrap()一个动态加载的元素?

我正在为一个本地没有HTML的第三方应用剥皮。 这一切都来自onLoad事件和一堆ajax调用。

我在页面中添加了jQuery。 我需要wrap()一个动态加载的元素。 如果需要,我可以包含一个插件。

我该怎么做呢? 谢谢。

更新:这有效,但还有更好的方法吗?

$(document).ready(function() { (function() { var length = $(".applicationShell").length; var h = setInterval(function () { if ($(".applicationShell").length > length) { length = $(".applicationShell").length; clearInterval(h); $(".applicationShell").addClass("test") } }, 100); })(); }); 

好吧,似乎我找不到更好的解决方案。 :(这是我用过的那个。

 $(document).ready(function() { (function() { var length = $(".applicationShell").length; var h = setInterval(function () { if ($(".applicationShell").length > length) { length = $(".applicationShell").length; clearInterval(h); $(".applicationShell").addClass("test") } }, 100); })(); }); 

如果你想在另一个活动中这样做,你可以这样做:

 $('.clickme').live('click', function() { $(myselector).wrap(/* my stuff to wrap */);// Live handler called. }); 

其中“click”是您希望管理行为的事件,而.clickme是事件实例化器上的类。

其他选项:将这个包装作为ajax成功的一部分(在这里进行jquery ajax的解析):

 ...snip success: function(msg) { $(myselector).wrap(/* my stuff to wrap */); }, ... 

 $('#element-id').wrap( "
" );

如果您发布一些需要帮助的代码,我可以给您更具体的帮助。

有用的链接?

编辑:很遗憾,您无法使用livequery插件来获得您正在寻找的效果。 感谢@patrick指出这一点。 这个小提琴显示它不适用于本机DOM元素追加(“你好”仍然是黑色)。 取消注释小提琴的最后一行,你会看到当jQuery追加最终运行时,livequery然后“看到”除了jQuery之外的原生DOM添加(并且两个添加变为绿色)。

因此,您可能必须坚持使用类似问题的轮询解决方案。 jQuery看到非jQuery DOM添加的事实,当它导致检查容器时可能会建议另一种方式进行轮询 – 只需在容器上使用livequery,就像在Fiddle中一样,然后使用setTimeout执行中性jQuery操作(如r容器上的emoveClass('nothing') )。 然后,Livequery将“看到”在民意调查之间添加的新元素。 这确实有效,但我不确定这是一个更好的选择。