gpt4 book ai didi

javascript - jquery选择器帮助

转载 作者:行者123 更新时间:2023-12-01 01:55:32 24 4
gpt4 key购买 nike

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

但我希望它不会在我打开了 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com