选择具有特定attr和非特定值的div

时间:2015-01-21 14:44:40

标签: jquery attr

我尝试选择具有特定attr的所有div,但此attr不是特定的。

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

似乎这会选择除了attr 23之外的所有其他内容。我想选择所有具有attr数据分钟的div,但这个attr不是23:

$("[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>

3 个答案:

答案 0 :(得分:3)

只需使用:not.not()

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

not从集合中删除指定的选择器。这里排除了data-minut=23的元素,其他元素也包括在内。

答案 1 :(得分:2)

如果您在选择器中添加div,则代码可以正常运行。否则它也会将body更改为黄色的背景颜色,因为您没有告诉jQuery您只想更改没有指定属性的div的颜色,因此它将更改每个节点的颜色。 t包含该属性。

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

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

答案 2 :(得分:1)

我希望通过在选择器的开头添加div,让它按预期工作:

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

现在,所有具有data data-minut属性且其值与23不同的div都会被yellow background-color突出显示。如果你问为什么它正在运作,那么我仍然想要解决这个问题,我欢迎一些经验丰富的jQuery老手的评论和帮助,指出为什么这是工作:-) ...也许它与选择器更具体的事实有关。

Fiddle