Mat*_*ias 6 html javascript jquery css-selectors
采取以下原理图html代码:
<div>
<span id='1' cust-attr='' />
<span id='2' />
<span id='3' cust-attr='Foo' />
</div>
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找一个选择器,找到所有span没有属性"cust-attr"或其"cust-attr"值为空的s.
在这种情况下,这将是1和2.
我尝试了以下选择器,结果如下:
span[cust-attr!=] 选择2和3span[cust-attr=''] 只选1span:not([cust-attr]) 选择2span(:not([cust-attr]),[cust-attr='']) 选择所有三个span([cust-attr=''],:not([cust-attr])) 选择1但是,我没有找到只选择1和2的人
.你知道有可能吗?
请注意,我想避免:
span:not([cust-attr]),span[cust-attr='']
Run Code Online (Sandbox Code Playgroud)
因为"跨度"实际上是一种更复杂的表达.
迟到了...
...或者你可以使用CSS选择器,并且速度是jQuery答案的10倍...... :)
document.querySelectorAll("input:not([id]), input[id='']");
Run Code Online (Sandbox Code Playgroud)
基本上,不要.
将所有逻辑放入选择器并不是一种好习惯.它最终会在计算上非常昂贵(因为这些部分需要在解释之前从字符串中解析出来)并且非常混乱.使用该filter方法的美丽:
$('span')
.filter(function(){
return !$(this).attr('cust-attr');
});
Run Code Online (Sandbox Code Playgroud)
这cust-attr将从选择中删除所有非空字符串的元素.