Javascript jquery选择器帮助
我在网站的每个链接上都会触发一个事件 但我希望它不会触发我所关注的链接class='nofocus' 比如说Javascript jquery选择器帮助,javascript,jquery,Javascript,Jquery,我在网站的每个链接上都会触发一个事件 但我希望它不会触发我所关注的链接class='nofocus' 比如说 <a>link</a> <a class='nofocus'>register</a> $('a').live('click', function() { $('#searchbox').focus(); } 如何重写$'a,使第二个链接不会触发事件?选择器:$a:not.nofocus将选择没有nofocus类的所有
<a>link</a>
<a class='nofocus'>register</a>
$('a').live('click', function() {
$('#searchbox').focus();
}
如何重写$'a,使第二个链接不会触发事件?选择器:$a:not.nofocus将选择没有nofocus类的所有链接。
首先使用$a:。从理论上讲,有三种选择 1.使用“属性不等于”选择器 “attribute not equal”选择器匹配不具有指定属性或具有指定属性但不具有特定值的元素
$('a[class!=nofocus]')
这只在标记中的A元素上不使用多个类的情况下有效,例如
有关更多信息,请参见jQuery文档中的
2.使用。不是
另一个选项是先选择所有A元素,然后过滤结果,从结果集中删除class=nofocus的元素
$('a').not('.nofocus')
这更灵活,因为它允许在一个元素上使用多个类
此外,它比使用“属性不等于选择器”稍微快一点™ 在Firefox中,但在Safari中速度稍慢
有关更多信息,请参见jQuery文档中的
3.使用:not选择器
最快和最短的选项是使用:
此外,我的测试指出,这是三种方法中最快的一种——比使用属性not equal to selector快两倍多
三种方案的性能比较
我创建了一个jsPerf测试用例,这样您就可以自己测试它了:
TL;DR:使用$'a:not.nofocus'
我应该做这项工作
尝试:非选择器:
Shog9:说得好!我现在给我的答案添加了一个解释。哇!这本书读得很好。当然,还有$a.filter:not.nofocus,但这已经太过分了。@Jimmie Lin:我已经在其中添加了$a.filter:not.nofocus。你知道,为了休息。正如所料,这是所有方法中最慢的方法:
$('a:not(.nofocus)')
$('a:not(.nofocus)')
$('a:not(.nofocus)').live('click', function() {
$('#searchbox').focus();
}