Select div 具有特定的属性而不是特定的值

Select div WITH specific attr and NOT specific value

我尝试 select 所有具有特定属性的 div,但这个属性不是特定属性。

$("[data-minut = '23']") // this works    

似乎这个 select 除了 attr 23 之外的所有东西。我想要 select 所有具有 attr 数据分钟但这个 attr 不是 23 的 div:

$("[data-minut != '23']") 

这里是要检查的例子:http://jsfiddle.net/3jbf2wwh/

jQUERY:

$("div").click(function() { 
    $("[data-minut != '23']").css("background-color","yellow");
});

CSS:

.blue {
    margin:0 auto;
    width:80px; height:30px;
    margin-bottom:20px;
    cursor:pointer;
    background-color:blue;
}

HTML:

<div class="blue" data-minut='23'></div>
<div class="blue" data-minut='24'></div>
<div class="blue" data-minut='25'></div>

只需使用:not.not()

$("[data-minut]:not([data-minut=23])")
// or
$("[data-minut]").not("[data-minut=23]")

not 从集合中删除指定的选择器。这里排除了具有 data-minut=23 的元素,并包含其他元素。

如果您在选择器中添加 div,您的代码就可以工作。否则它还会将 body 更改为黄色背景色,因为您没有告诉 jQuery 您只想更改没有指定属性的 div 的颜色,所以它将更改不包含该属性的每个节点的颜色。

http://jsfiddle.net/3jbf2wwh/3/

$("div").click(function() { 
    $("div[data-minut != '23']").css("background-color","yellow");
});

我希望它能按预期工作,方法是在选择器的开头添加 div

$("div").click(function() { 
    $("div[data-minut != '23']").css("background-color","yellow");
});

现在所有具有 data data-minut 属性且其值不同于 23 的 div 都被突出显示为 yellow background-color。如果您问它为什么有效,那么我仍在努力解决这个问题,我欢迎一些经验丰富的 jQuery 退伍军人提出意见和帮助,以指出为什么它有效 :-) ...也许这与选择器更具体有关。

Fiddle