我正在尝试定位条件语句中提到的实际元素,这是我的代码示例:
let selectValue = $('.Select input').val();
if ($('.vehicle-item').attr('data-value') != selectValue) {
//Add a class to the element that hasn't got an attribute equal to the `selectValue` variable.
}
所以基本上在我的页面上有多个元素,类.vehicle-item
,其中一些将传递条件语句,有些则不会。我想为那个没有通过条件语句的类添加一个类。
如果我能以某种方式迭代那个条件语句,找不到任何没有通过的元素,并添加一个可以工作的类,但是我该如何做呢?
答案 0 :(得分:2)
您可以使用filter()
来实现此目标:
let selectValue = $('.Select input').val();
$('.vehicle-item').filter(function() {
return $(this).data('value') != selectValue;
}).addClass('foo');
或者您可以使用属性选择器:
let selectValue = $('.Select input').val();
$('.vehicle-item[data-value!="' + selectValue + '"]').addClass('foo');
请注意,后者直接从元素中读取数据属性,因此如果在页面加载后以编程方式更新值,则 使用filter()
。
就个人而言,我会使用filter()
,因为它在大多数浏览器中都会稍微快一点,而且我觉得它更容易阅读。
答案 1 :(得分:0)
你可以直接使用"不等于"选择器和多选择器功能。
$(".vehicle-item[data-value!='"+selectValue+"']").each(function(){
// do something
});