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

时间:2013-07-22 14:43:48

标签: javascript jquery

以下是我所拥有的一个例子

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()?我知道我可以在排除链接中添加一个类并以这种方式定位它但我更喜欢:not()所以它更具动态性。

http://jsfiddle.net/qDafT/

2 个答案:

答案 0 :(得分:1)

根据文档,它应该有效。

  

内部接受所有选择器:not(),例如:: not(div a)和:not(div,a)。

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

答案 1 :(得分:0)

在个人情况下,我会在回调中完成检查,我想它会更高效!

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

    // ....
});