2

我有一个 jQuery 选择器:

div div ul li.normal a, div div ul li.massive a

是否有这样的逻辑等效选择器:

div div ul (li.normal, li.massive) a

任何比以下更好的解决方案:

$('div div ul li').filter('.normal, .massive').find('a')
4

1 回答 1

2

这真的是个人喜好,并且涉及您认为随着时间的推移可能会在您的应用程序中发生变化的细节。如果我预计这两个选择器将来会出​​现分歧,我可以使用逗号将它们完全分开,如下所示:

$('div div ul li.normal a, div div ul li.massive a')

但是,如果没有任何改变结构的计划,那么您在问题中的示例会很好用。

如果您对选择器的速度有疑问,您可以在其周围放置一些计时代码并比较哪个选择器更快。

属性选择器基本上是相当于 OR 的 jQuery 选择器。在文档中它说:

选择所有指定选择器的组合结果。

它可以用于元素选择器、类选择器、id选择器、属性选择器等的任意组合。

因此,如果您想 100% 遵守 DRY 原则,您的示例似乎是最简化的版本:

// -----------------------[ normal || .massive ]--------
$('div div ul li').filter('.normal, .massive').find('a')
于 2012-04-07T03:36:32.263 回答