1

这是我所拥有的一个例子

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/

4

2 回答 2

1

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

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

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

于 2013-07-22T14:49:34.960 回答
0

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

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

    // ....
});
于 2013-07-22T14:48:11.247 回答