使用jQuery .each和$(this)删除XML节点

时间:2011-11-09 13:34:32

标签: jquery xml

我正在使用jQuery的.each()循环一些元素,我想在符合某些要求时删除一个节点。我不确定这个的语法,我尝试了几件事:

$(this).remove();
$xml.remove(this);
$xml.removeNode(this);

...等。找到一个有效的例子有些困难,有人能指出我正确的方向吗?我假设它很简单,我还没能找到正确的语法。下面有一个不工作的小提琴。

http://jsfiddle.net/SHNpn/

由于

1 个答案:

答案 0 :(得分:5)

那是因为对remove()的调用只会从DOM中删除该元素。它不会从$siblings jQuery对象中删除它。

如果您在删除find()节点后再次致电alex以重新匹配兄弟姐妹,您将获得预期结果:

var $xml = $(xmlString);
var $siblings = $xml.find("sibling");

$siblings.each(function(){
    var name = $(this).attr("name");
    if (name == "alex")
        $(this).remove();
});

// Here, the "alex" element is not in the DOM, but still part of $siblings.

$xml.find("sibling").each(function(){
    var name = $(this).attr("name");
    console.log(name);
});

// Since we're calling find() again, the code above will only print "bob".

您会找到更新的小提琴here