jquery删除除div之外的所有子节点

时间:2012-02-22 06:54:17

标签: jquery

div div/span以外,如何删除class='notsure'内的所有内容?我可以使用empty删除所有子项,但不确定如何保存特定的div

<div id="test">
    here is a test
    <p>a paragraph</p>
    <div class="notsure"></div>
</div>

7 个答案:

答案 0 :(得分:35)

var save = $('#test .notsure').detach();
$('#test').empty().append(save);

答案 1 :(得分:13)

更新

如果您还想删除文字here is a test

var notsure = $('.notesure');
$('#test').html('').append(notsure);

Working Example


$('#test').children().not('.notsure').remove();

答案 2 :(得分:6)

试试这个

$("#test").children().filter(":not(.notesure)").remove();

答案 3 :(得分:1)

您可以过滤其内容:

var b = $('#test').contents();

b.filter(function() {  //
    return this.nodeType == 3; //Node.TEXT_NODE
}).remove()
.end().filter(':not(.notesure)').remove(); //Find the elements that don' t have the .notesure class.;


$('.notesure').click(function(){
    $(this).html('clicked !!');
}

实施例。 http://jsbin.com/urudew/2/edit

答案 4 :(得分:1)

删除兄弟姐妹但保留.notsure

$('.notsure').clone(true).appendTo($('#test').empty());

<强> jsBin demo

true移除clone(true),以摆脱{em>点击等.notsure的约束事件。
如果事件感兴趣,那么您可以这样做:

$('.notsure').appendTo($('#test').empty());

答案 5 :(得分:1)

您可以查看以下是工作示例

$(function () {
$('#delete-button').click(function () {
    deleteElementsBelow('#parent-container');
});

function deleteElementsBelow(parentContainerSelector) {
    var save = $('#parent-container #delete-button').detach();
            $(parentContainerSelector).empty().append(save);
}
});

https://jsfiddle.net/L9vdz7n7/

答案 6 :(得分:-1)

这里可以做一招......

$("#test").html('<div class="notesure">'+$('div.notesure').html()+'</div>')