【问题标题】:remove XML node with jQuery .each and $(this)使用 jQuery .each 和 $(this) 删除 XML 节点
【发布时间】:2011-11-09 13:34:32
【问题描述】:

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

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

...等等。在找到一个可行的例子时遇到了一些麻烦,有人能指出我正确的方向吗?我假设它很简单,我只是找不到正确的语法。下面有一个不起作用的小提琴。

http://jsfiddle.net/SHNpn/

谢谢

【问题讨论】:

  • 你的非工作脚本是由于在 IF 语句之后缺少标签 {} 我不知道其余的
  • 并不总是需要这些。我通常在匆忙时将它们排除在外,并且只使用单行操作。不过还是谢谢。

标签: jquery xml


【解决方案1】:

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

如果你在移除alex节点后再次调用find()重新匹配兄弟,你会得到预期的结果:

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

【讨论】:

    猜你喜欢
    • 2013-11-05
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多