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将“看到”在民意调查之间添加的新元素。 这确实有效,但我不确定这是一个更好的选择。