JQuery 在选择器中排除具有特定类的元素

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

我想在一个新的标签中打开某些链接,而忽略那些与某个类(在你问之前,我不能把类的链接,我试图赶上,因为他们来自 CMS)。

我想排除类 "button""generic_link"的链接

我试过了:

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

但是,这似乎不工作,也如何做 OR 语句,以包括 "generic_link"在排除?

132306 次浏览

用这个。

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

你可以使用 。不()方法:

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

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

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

这两种方法之间几乎没有什么区别,除了 .not()更具可读性(特别是在链接的情况下)和 :not()非常快。有关差异的更多信息,请参见 这个堆栈溢出的答案

为了添加一些今天对我有帮助的信息,还可以将 jQuery 对象/this传递给 。不()选择器。

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

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