【问题标题】:jQuery: Variable points to live DOM, not copy of DOM on IE onlyjQuery:变量指向实时 DOM,而不是仅 IE 上的 DOM 副本
【发布时间】:2011-10-28 20:38:33
【问题描述】:

我有一个包含无序列表的 DIV。我想复制一份,重新格式化一下,然后重新插入到 DOM 中。这很好用,在 IE 上执行(目前在 8 和 9 中测试过),其中元素的副本似乎是实时的,而不是副本。

会发生什么:

var target = $('.cities').eq(0) //grab my list

var $bigList = $(target).find('li')  // grab all the list items

alert($bigList.eq(0).html()) // this displays the first list item, no problem

$(target).html(emptyList) // I put in a bunch of placeholder HTML

alert($bigList.eq(0).html()) // EMPTY on IE, same as first alert() on all others 

似乎$bigList 仍然指向 DOM,而不是被复制为一个值。我该如何解决这个问题?

【问题讨论】:

    标签: javascript jquery html internet-explorer


    【解决方案1】:

    $bigList.remove();代替$(target).html(emptyList)http://jsfiddle.net/gilly3/FP5kX/

    编辑:调用两个语句:

    $bigList.remove();
    target.html(emptyList);
    

    http://jsfiddle.net/gilly3/FP5kX/2/

    【讨论】:

    • 对不起,我不清楚“emptylist”是我稍后使用的一些占位符 HTML。
    • 对。 .remove() 从 DOM 中删除元素,但不删除它们。你仍然有你的元素。请参阅我发布的 jsfiddle。
    • 效果很好。谢谢你。我仍然想知道为什么 IE 会以不同的方式处理这个问题。
    【解决方案2】:

    尝试克隆 .cities,使用克隆您将获得 dom 元素的副本,但不是实际元素

    var target = $('.cities').clone()[0];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2016-03-10
      • 2018-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多