0

我有这个部分。

<section class="note">
    Content-0: SomeContent that needs to be removed. Anything below this stays.
    <br />
    <div class="content1">Content-1: Stays <br /><br /></div>
    <div class="content2"><p>Content-2: Stays</p></div>
</section>

我想要的是在页面加载中删除 Content-0 行并且只有两个 s。所以我在加载这个代码......

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
    $(function () {
        var content1 = $('section.note div.content1');
        var content2 = $('section.note div.content2');

        $('section.note').html('').append(content1).append(content2);
        alert($('section.note').html());
    });
</script>

但它在 IE(所有版本)中表现得很奇怪。在 IE 10 中,它附加了 div,但没有内容。在其他 IE 版本中,它不会删除 Content-0 并保持所有内容不变。

它在 FireFox 中运行良好。

4

2 回答 2

2

试试这个:

$(function () {
    var content1 = $('section.note div.content1').clone();
    var content2 = $('section.note div.content2').clone();

    $('section.note').html('').append(content1).append(content2);
    alert($('section.note').html());
});

基本上发生的事情是,这里:var content1 = $('section.note div.content1')您指的是实际的 DOM 元素,然后您首先删除 DOM 元素,$('section.note').html('')然后再次附加这些引用,但与此同时,通过将 html 设置为 '',文本已经消失。因此,克隆这些 div 可以修复它,因为您不再引用原始 DOM 元素。

于 2013-04-15T21:48:36.157 回答
2

似乎 IE 清理元素的速度如此之快,以至于 jquery 无法正确移动它们,因为它们已被前面的.html('')调用删除。您可以通过克隆或分离来解决这个问题。

http://jsfiddle.net/DrxFV/2/

var content1 = $('section.note div.content1').detach();
var content2 = $('section.note div.content2').detach();
$('section.note').html('').append(content1).append(content2); 
于 2013-04-15T21:54:01.613 回答