Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery选择器帮助_Javascript_Jquery - Fatal编程技术网

Javascript jquery选择器帮助

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类的所有

我在网站的每个链接上都会触发一个事件

但我希望它不会触发我所关注的链接class='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();
}