如何使用:not()来针对具有特定父级的常规选择器

How do I use :not() to target a general selector with specific parent?

本文关键字:选择器 常规 not 何使用      更新时间:2023-09-26

这里有一个的例子

var exitLinkSelectors = 'a:not(.external_link)';
$(document).on('click', exitLinkSelectors, function(e){
    // ....
});

这将针对除具有external_link类的锚点之外的所有锚点。然而,我想要的是它也不针对

.exclude a

我想写

var exitLinkSelectors = 'a:not(.external_link, .exclude a)';

但这不是那样的,有没有办法用:not()来写这个?我知道我可以向exclude链接添加一个类,并以这种方式将其作为目标,但我更喜欢:not(),这样它更动态。

http://jsfiddle.net/qDafT/

根据文档,它应该可以工作。

所有选择器都可以在:not()中接受,例如::not(div a)和:not(iv,a)。

并尝试了var exitLinkSelectors = 'a:not(.external_link, .exclude a)';,它对我来说很好http://jsfiddle.net/qDafT/1/

就个人而言,我会在回调中进行检查,我想它会更具性能!

$(document).on('click', "a", function(e){
    var $this = $(this);
    if($this.hasClass("external_link") || $this.closest(".exclude").length > 0) 
        return;
    // ....
});