Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:选择非';你没有空吗?_Javascript_Jquery_Jquery Selectors_Custom Data Attribute - Fatal编程技术网

Javascript jQuery:选择非';你没有空吗?

Javascript jQuery:选择非';你没有空吗?,javascript,jquery,jquery-selectors,custom-data-attribute,Javascript,Jquery,Jquery Selectors,Custom Data Attribute,我试图选择所有具有数据转到属性且不为空的元素 我尝试了$(“[数据转到!=”),但奇怪的是,如果我这样做,它似乎会选择页面上的每个元素。我不确定是否有一个简单的选择器,但您可以使用过滤器(): 参考资料: 试试这个: $('[data-go-to:not(:empty)]') 根据 这应该可以 :不([attr=“value”]) 希望这有帮助试试看 $(':not([data-go-to=""])') 更新: 为了不让任何人误入歧途,这个答案将在较旧版本的jQuery中使用,但不是

我试图选择所有具有
数据转到
属性且不为空的元素


我尝试了
$(“[数据转到!=”)
,但奇怪的是,如果我这样做,它似乎会选择页面上的每个元素。

我不确定是否有一个简单的选择器,但您可以使用
过滤器()

参考资料:

试试这个:

$('[data-go-to:not(:empty)]')
根据 这应该可以

:不([attr=“value”])

希望这有帮助

试试看

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

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

$('[data-go-to]').filter(function() {
    return $(this).data('go-to')!="";
});
使用
:not
.not()
:empty
等将仅检查元素本身是否为空,而不是数据属性。为此,必须根据数据属性值进行过滤


作为进一步的参考,以及最新的(2014年5月)(2015年8月)(2016年9月)(2017年4月)(2018年3月)(2019年3月)(20年5月)…
答案适用于:

空字符串: 如果
attr
必须存在
可以有任何值(或根本没有值)

缺少属性: 如果
attr
可以存在&如果存在,必须有一些值

或两者兼而有之: 如果
attr
必须存在&必须有一些值


PS:可以进行更多组合


检查此测试以获取示例:
  • jqueryv1.11.0->
  • jqueryv2.1.0->
  • jqueryv2.1.3->
  • jqueryv3.0.0-alpha1->
  • jqueryv3.1.1 Slim->
  • jqueryv3.2.1->
  • jqueryv3.3.1->
  • jQuery v3.4.1->
    JSFIDLE上一个jQuery版本于2020年5月28日发布
  • jQuery Edge->
    (小心使用)

或者在这里用这个。 *代码段正在运行jQuery v2.1.1

jQuery('div.test_1>a[href]').addClass('match');
jQuery('div.test_2>a[href!=“”]).addClass('match');
jQuery('div.test_3>a[href!=“”][href]').addClass('match')
div,a{
显示:块;
颜色:#333;
保证金:5px;
填充物:5px;
边框:1px实心#333;
}
h4{
保证金:0;
}
a{
宽度:200px;
背景:#ccc;
边界半径:2px;
文字装饰:无;
}
a、 匹配{
背景色:#16BB2A;
位置:相对位置;
}
a、 赛后{
内容:‘比赛!’;
位置:绝对位置;
左:105%;
}

测试1:jQuery('a[href]')
href:不在场

具有“数据属性名称”,且其值不为空:

$('[data-attributename]:not([data-attributename=""])')
“数据属性名称”是否为空:

$('[data-attributename]')
这对我来说很有用

$('[attributename]').filter('[attributename!=""]')
这对我很有用:

$('.data .title td[data-field!=""]')

不行
“语法错误,无法识别的表达式:[数据转到:非(:空)]”
根据这一点,应该是可行的,不幸的是,这将是一个干净的解决方案!谢谢,这很有效!我只想选择图像元素,所以我添加了$(':not(img[data go==”“])这不是选择了所有没有空“data to go”属性的元素吗?当询问者想要所有具有该属性的元素都不是空的时候?(正如Siva Charan的答案所解析的),也不需要任何双引号…就像
$('element:not)一样([attribute=]);//获取所有的
$(':not([attribute=]);//获取所有的
这为我获取了每个元素,包括具有我正在查找的数据属性的元素似乎在Safari中不起作用,但是
$('[data go!='']:[data go-to])
有。这一个适用于空字符串和缺少的属性,perfectas从2014年5月起不起作用,给出了
无法识别的表达式
错误。就是这样。请在此处向该用户投票。其他旧答案对我不起作用。我使用了第三个示例。Seconded@Valamas AUSEdit:添加了SO代码片段,因此您可以在此处对其进行测试。Th是有效的。
$(':not([data go=“”))
不再有效了感谢您及时更新答案这是我在2015年6月仍然有效的唯一答案。不过这是两次迭代。
    jQuery("[href!=''][href]");
$('[data-go-to]:not([data-go-to=""])')
$('[data-attributename]:not([data-attributename=""])')
$('[data-attributename]')
$('[attributename]').filter('[attributename!=""]')
$('.data .title td[data-field!=""]')