javascript - jquery选择器帮助

标签 javascript jquery

我的网站中的每个链接都会触发一个事件。

但我希望它不会在我打开了 class='nofocus' 的链接上触发。

例如

 <a>link</a>
 <a class='nofocus'>register</a>

 $('a').live('click', function() {
     $('#searchbox').focus();
 }

如何重写 $('a) 以便第二个链接不会触发该事件?

最佳答案

理论上,有三种选择。

1。使用“属性不等于”选择器

“属性不等于”选择器匹配不具有指定属性或具有指定属性但不具有特定值的元素。

$('a[class!=nofocus]')

只有当您不在A上使用多个类时,这才有效。标记中的元素,例如<a href="foo" class="nofocus bla bar baz">foo</a>

参见Selectors/attributeNotEqual在 jQuery 文档中了解更多信息。

2。使用.not()

另一个选项是选择所有 A首先元素,然后过滤结果,删除带有 class="nofocus" 的元素从结果集中。

$('a').not('.nofocus')

这更加灵活,因为它允许在 A 上使用多个类元素。

此外,它比在 Firefox 中使用 The Attribute Not Equal To Selector™ 稍快,但在 Safari 中稍慢。

参见Traversing/not在 jQuery 文档中了解更多信息。

3。使用:not()选择器

最快(也是最短)的选项是使用 the :not selector :

$('a:not(.nofocus)')

此外,我的测试指出,这是迄今为止这三种方法中最快的方法 - 比使用不等于选择器的属性快两倍多!

三种方案的性能比较

我创建了一个 jsPerf 测试用例,以便您可以自己测试: http://jsperf.com/get-elements-without-specific-class

<小时/>

TL;DR:使用$('a:not(.nofocus)') .

关于javascript - jquery选择器帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1994537/

相关文章:

javascript - 谷歌分析记录首次点击

javascript - 单击具有特定样式的 iframe

javascript - jQuery append 后没有图像尺寸

php - 在 WordPress 中设置 cookie 时未返回正确的输出

javascript - 我想在 javascript、jQuery 中请求页面索引时查看数据

javascript - 如何使用动态内容更新 Twitter 分享按钮 URL?

javascript - 如何使用 JSHint 显示 JavaScript 错误?

Javascript:附加在列表的开头

jquery - 通过索引检索具有类的某些元素

c# - JQuery Ajax 函数不调用 DNN 中的后端方法