我有一个jQuery选择:如何更改jQuery中逻辑OR的优先级?
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')
我有一个jQuery选择:如何更改jQuery中逻辑OR的优先级?
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')
这是真正的个人喜好,并涉及有关您的应用程序随着时间的推移可能会改变的详细信息。如果我想到两个选择,以在未来的分歧,我可以用逗号让他们完全独立的,就像这样:
$('div div ul li.normal a, div div ul li.massive a')
不过,如果没有任何计划改变结构,在你的榜样问题会很好。
如果您一直怀疑选择器的速度,可以在其周围放置一些时间代码,并比较哪个选择器更快。
Multiple Attribute Selector基本上是与OR相当的jQuery选择器。在说明文档中:
选择所有指定选择器的组合结果。
它可以在元素选择,类选择,ID选择,属性选择的任意组合使用等
因此,如果你想坚持100%DRY原则,你的例子似乎是最简化的版本:
// -----------------------[ normal || .massive ]--------
$('div div ul li').filter('.normal, .massive').find('a')
不知道这样的事情。另一种方法是过滤器。 '$('div div ul a')。filter('li.normal,li.massive')' – mrtsherman 2012-04-07 03:31:53
@mrtsherman。不起作用。 '过滤器'只对当前的元素集进行操作。 – kev 2012-04-07 03:38:27
你是对的,jmort253很好,可以发布正确的方式来使用过滤器在这种情况下。 – mrtsherman 2012-04-07 04:08:52