我正在使用jQuery的.each()循环一些元素,我想在符合某些要求时删除一个节点。我不确定这个的语法,我尝试了几件事:
$(this).remove();
$xml.remove(this);
$xml.removeNode(this);
...等。找到一个有效的例子有些困难,有人能指出我正确的方向吗?我假设它很简单,我还没能找到正确的语法。下面有一个不工作的小提琴。
由于
答案 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。