删除所有不包含自定义属性的UI

时间:2012-03-22 11:09:38

标签: jquery jquery-selectors custom-attributes

我想只删除那些没有自定义属性的li的ul。我正在尝试这个

$myParent.children('li ul:not("ul[isClicked=True]")').remove();

但无法让它发挥作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望删除包含ul的{​​{1}}个li,其属性为isClicked = "True"

$myParent.find("li[isClicked=True]").parent("ul").remove();

请注意,该属性必须包含单词"True";它是一个字符串,而不是布尔值。

Live example

根据您的评论:

  

我实际上反过来也在寻找。删除所有没有自定义属性的ul。

这与你问题的开头句子相反(“我只想删除那些带有自定义属性的那些ul”)。 :-)假设ul元素是$myParent的直接子元素,你就是这样做的(你的示例代码暗示了这一点);如果不是这样,只需将第一行的.children更改为.find

$myParent.children("ul").each(function() {
  var $ul = $(this);
  if (!$ul.find("li[isClicked=True]")[0]) {
    // Doesn't have one, remove it
    $ul.remove();
  }
});

Live example


FWIW,该属性名称不会validate。您可以考虑切换到data-* attribute form