jQuery在selector中排除了某些类的元素

时间:2010-06-10 14:03:46

标签: jquery

我想在jQuery中为某些锚标签设置一个单击事件触发器。

我想在新选项卡中打开某些链接,而忽略具有某个类的链接(在您要求我不能将类放在我试图捕获的链接上之前,因为它们来自CMS)。

我想排除课程 "button" "generic_link"

的链接

我试过了:

$(".content_box a[class!=button]").click(function (e) {
    e.preventDefault();     
    window.open($(this).attr('href'));
});

但这似乎不起作用,我如何在排除中包含 "generic_link" 的OR语句?

3 个答案:

答案 0 :(得分:233)

您可以使用.not()方法:

$(".content_box a").not(".button")

或者,您也可以使用:not()选择器:

$(".content_box a:not('.button')")

两种方法之间几乎没有区别,除了.not()更具可读性(特别是链接时),:not()非常快。有关差异的详细信息,请参阅this Stack Overflow answer

答案 1 :(得分:25)

使用此.. ..

$(".content_box a:not('.button')")

答案 2 :(得分:2)

要添加一些今天对我有帮助的信息,还可以将jQuery对象/ this传递到.not()选择器中。

$(document).ready(function(){
    $(".navitem").click(function(){
        $(".navitem").removeClass("active");
        $(".navitem").not($(this)).addClass("active");
    });
});
.navitem
{
    width: 100px;
    background: red;
    color: white;
    display: inline-block;
    position: relative;
    text-align: center;
}
.navitem.active
{
    background:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="navitem">Home</div>
<div class="navitem">About</div>
<div class="navitem">Pricing</div>

上面的示例可以简化,但是希望显示this选择器中not()的用法。