jQuery:选择不为空的数据属性?


Answers:


76

尝试

$(':not([data-go-to=""])')

更新:

为了不使任何人误入歧途,此答案将在较旧的jQuery版本中有效,但并不适用于未来。由于@gmo和@siva的答案似乎都适用于更高版本,因此我谨遵(并鼓励您投票)他们的答案....当然希望您过得愉快。


谢谢,这很好!我只想选择图像元素,所以我添加了$(':not(img [data-go-to ==“”]')
msanjay 2012年

2
这是否不选择所有不具有空白“待运数据”属性的元素?当请求者希望具有该属性的所有元素都不为空时?(如西瓦·查兰(Siva Charan)的回答所述)
Rodnaph 2013年

真的不需要任何双引号...如$('element:not([attribute=])'); // gets all of <element attribute="">$(':not([attribute=])'); // gets all of <* attribute="">
Anthony Hatzopoulos

2
这对我来说具有所有要素,包括具有我要寻找的数据属性的要素
Devil的倡导者2014年

似乎无法在Safari中工作,但$('[data-go-to!=""]:[data-go-to]')可以。
2015年

183

作为进一步的参考,以及最新的 (may'14) (aug'15) (sep'16) (apr'17) (mar'18) (mar'19)may'20 ...
适用于:

空字符串:

如果必须存在并且可以有任何值(或根本没有attr

    jQuery("[href]");

缺少属性:

如果可能存在和存在,则必须具有一定的价值 attr

    jQuery("[href!='']");

或两者:

如果必须存在并且必须具有某些价值... attr

    jQuery("[href!=''][href]");

PS:可能有更多组合...


jsFiddle中检查此测试以获取示例:


或者在此处使用此代码段

*代码段正在运行jQuery v2.1.1


6
就是这个。在此处赞这个用户。其他较旧的答案对我不起作用。我用了第三个例子。
Valamas 2014年

借调@ Valamas-AUS
Adam Waite 2014年

编辑:添加了SO代码段,因此您可以在此处进行测试。
gmo 2015年

这是可行的。$(':not([data-go-to=""])')不工作了
马修CHARBONNIER

1
感谢保持回答最新
安东尼ç


7

具有“ data-attributename”,其值不为空:

$('[data-attributename]:not([data-attributename=""])')

'data-attributename'是否为空:

$('[data-attributename]')

JS小提琴示例


1
这是在2015
有用




2
$('[data-go-to]').filter(function() {
    return $(this).data('go-to')!="";
});

使用:not.not():empty等仅检查元素本身是空的,而不是数据属性。为此,您将必须根据数据属性值进行过滤。

小提琴


1

这对我有用

$('[attributename]').filter('[attributename!=""]')

不过,这是两次迭代。
詹斯


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.