jQuery:选择非空的数据属性?

IT技术 javascript jquery jquery-selectors custom-data-attribute
2021-03-10 17:01:04

我正在尝试选择具有data-go-to非空属性的所有元素

我已经尝试过,$('[data-go-to!=""]')但奇怪的是,如果我这样做,它似乎会选择页面上的每个元素。

6个回答

作为进一步的参考,以及最新的 (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

编辑:添加了 SO 代码片段,因此您可以在此处进行测试。
2021-05-02 17:01:04
感谢您保持最新的答案
2021-05-06 17:01:04
就是这个。在这里为该用户点赞。其他较旧的答案对我不起作用。我用了第三个例子。
2021-05-12 17:01:04
借调@Valamas-AUS
2021-05-15 17:01:04
这是一个正在工作的。$(':not([data-go-to=""])')不再工作
2021-05-20 17:01:04

尝试

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

更新:

为了不让任何人误入歧途,这个答案将适用于旧版本的 jQuery,但不是面向未来的。由于@gmo 和@siva 的答案似乎都适用于更高版本,因此我遵循(并鼓励您投票)他们的答案……当然希望您有美好的一天。

也不需要任何双引号......如$('element:not([attribute=])'); // gets all of <element attribute="">$(':not([attribute=])'); // gets all of <* attribute="">
2021-04-21 17:01:04
似乎在 Safari 中不起作用,但$('[data-go-to!=""]:[data-go-to]')确实如此。
2021-04-23 17:01:04
这不会选择所有没有空白“data-to-go”属性的元素吗?当提问者想要具有该属性的所有元素不为空时?(正如 Siva Charan 的回答所解决的那样)
2021-05-08 17:01:04
谢谢,这很好用!我只想选择图像元素,所以我添加了 $(':not(img[data-go-to==""]')
2021-05-16 17:01:04
这为我获取了每个元素,包括具有我正在寻找的数据属性的元素
2021-05-21 17:01:04
$('[data-go-to!=""]:[data-go-to]').each(function() {
    // Do Your Stuff
});​
这个适用于空字符串和缺失的属性,完美
2021-05-03 17:01:04
截至 14 年 5 月不起作用,Unrecognized Expression出现错误。
2021-05-04 17:01:04

有 'data-attributename' 并且它的值不为空:

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

'data-attributename' 是否为空:

$('[data-attributename]')

JS小提琴示例

这是 2015 年 6 月对我仍然有效的唯一答案。
2021-05-13 17:01:04

我不确定一个简单的选择器,但你可以使用filter()

$('[data-go-to]').filter(
    function(){
        return ($(this).attr('data-go-to').length > 0);
    });

JS小提琴演示

参考: