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

时间:2010-08-03 17:30:26

标签: jquery

我正在为本地没有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);
})();


});

4 个答案:

答案 0 :(得分:1)

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

$(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);
})();


});

答案 1 :(得分:0)

$('#element-id').wrap( "<div class='wrapExample' />" );

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

Helpful link?

答案 2 :(得分:0)

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

$('.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 */);
            },
...

...

答案 3 :(得分:0)

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

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