没有任何属性的元素的 JQuery 选择器

3

我希望选择一个/所有没有与其关联的属性的元素。是否有一种方法可以选择特定的元素而不考虑其他段落标记包含什么属性?

例如:

<p class="a" id="para1">This is paragraph 1</p>
<p id="para2" class="a b c d e f" >This is paragraph 2</p>
......
......
<p>This is paragraph 3</p> <!-- select this p without attribute -->
<div>
  <p class="inside-div" id="para5">This is paragraph</p>
</div> <!-- select this div without attribute-->

你可以这么做,但是为什么需要呢? - dfsq
its just for curiosity. - Faisal Naseer
4
$("p").filter(function() { return this.attributes.length === 0; }) - Andreas
SO如此善变。被采纳的答案获得1个赞,其他在同时输入的答案获得6个赞,但仅限于p,因此无法解决OP对“任何”而不仅仅是“p”的问题。 - freedomn-m
3个回答

6
你可以使用HTML元素的属性集合来查找是否有任何属性。

演示

ps = $('p').filter(function(){
   return this.attributes.length == 0;
});

1
要获取没有属性的所有元素,请使用选择器body>*以及属性过滤器(否则你会得到html/head/title等)。
$("body>*").filter(function() { 
    return this.attributes.length === 0; 
})

简单的 代码段,包含原始HTML。

很棒,它允许我选择所有没有属性的元素,谢谢。 - Faisal Naseer

0

这种实现方式更适合代码重用,因为它添加/扩展了jQuery选择器。

HTML

示例HTML:

<span>Text</span>
<span>Text123</span>
<span id="test">Text123</span>

jQuery

noattr选择器:

$.extend(jQuery.expr[':'], {  
  noattr: function (el) {
    return el.attributes.length == 0;
  }
});

使用:noattr选择器的示例。

const noAttributeElements = $("span:noattr");
console.log(noAttributeElements[0]); //<span>Text</span>
console.log(noAttributeElements[1]); //<span>Text123</span>
console.log(noAttributeElements[2]); //undefined 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接