如何通过jQuery获得没有特定属性的元素
我知道如何获得具有特定属性的元素:
$("#para [attr_all]")
但是我怎样才能得到没有特定属性的元素? 我试试
$("#para :not([attr_all])")
但它不起作用。 什么是正确的方法来做到这一点?
让我举个例子:
<div id="para"> <input name="fname" optional="1"> <input name="lname"> <input name="email"> </div>
jQuery的:
$("#para [optional]") // give me the fname element $("#para :not([optional])") //give me the fname, lname, email (fname should not appear here)
我想到的第一件事(也许是次优):
$('p').filter(function(){ return !$(this).attr('attr_all'); });
然而p:not([attr_all])
应该可以工作,所以我认为你的代码中还有其他的东西在发生。
如果你的代码示例是你正在使用的确切代码,我认为这个问题是一个错误的空间。
$("#para :not([attr_all])")
应该
$("#para:not([attr_all])")
如果你在那里留下空间,它会select#para
后代 。
一个更快的方法是首先获取所有ID为para的元素(如果存在多个元素,则为无效的HTML,请考虑使用类),并使用filter(或根据HTML的构造方式来查找)方法只获取没有属性的元素,如下所示:
$('#para').filter(':not([attr_all])');
这样做,你有jQuery做更less的工作,因为你只是循环通过一个较小的元素子集,以获得那些没有属性。 使用单个select器语句(如$("#para :not([attr_all])")
,将使jQuery获取所有没有该属性的元素,然后过滤它们的ID为para。
尝试$("#para [attr!=val]")
。
你的:not
真的应该工作,但是,这让我怀疑其他事情正在发生。
有关属性select器的完整列表,请参阅jQuery Selectors文档 。
弗兰克·德罗萨(Frank DeRosa)的回答是正确的,但是由于OP确实想要find后代,所以这有点不合适。 自己尝试一下,似乎应该是按照这种方式工作的,但是不pipe你运行的是什么,都不会像':'运算符被直接用作后代。 尝试使用
$("#para input:not([optional])")
会留下评论,但还不能。