2009-07-30 53 views
0

我有一个选择器“td > a.leftmenuitem:last, div > a.leftmenuitem:last”,我想稍微简化一下。我试过“* > a.leftmenuitem:last”,“td, div > a.leftmenuitem:last”和“(td, div) > a.leftmenuitem:last”,其中没有一个按照第一个选择器的方式工作。如果没有为每个选择器单独选择器,这种事情在选择器语法中是不可能的?简化jQuery选择器

回答

2

不能简化:

td > a.leftmenuitem:last, div > a.leftmenuitem:last 

,而不存在共同之处,所以你可以选择一个表达所有相关的TD和div元素。例如,如果他们两人都类等等,你可以这样做:

.blah > a.leftmenuitem:last 

但不要用这种表达,如果你能避免它。类选择器很慢(与ID和标记选择器相比)。

只是有什么问题吗?

a.leftmenuitem:last 

顺便说一句,你一定:last是正确的选择?很多人误用了它,把它误认为:last-child:last将仅匹配一个元素,即页面上找到的最后一个匹配元素。

+0

啊是的!当然:最后一个孩子完美地工作。我想知道为什么只使用a.leftmenuitem:最后没有奏效。谢谢! – DLH 2009-07-30 16:46:00

1

什么是更大,有时更快。当您使用*而不是td时,您的查询速度会更慢。

0

我不认为你可以简化它。我会选择提供您感兴趣的链接,以便您可以简单地做​​。这样jQuery可以简单地扫描所有匹配的<a>标签,而不必担心他们的父母是<td>元素。

0

您的选择非常简单。如果你想简化它,你可以这样做:

$('a.leftmenuitem:last').parent().doWhateverYouWereGoingToDo(); 

我怀疑这会导致更快的执行时间,但是。

0

也许我只是困惑,但如果

* > a.leftmenuitem:last 

会为你工作,那么为什么不

a.leftmenuitem:last 

,而不是去?

0

您正在使用的选择是

Parent > Child 

比赛由Parent指定的元素Child指定的所有子元素。除非你在不在的<div><td>元素孩子的页面使用<a>元素在其他地方,为什么不使用

$('a.leftmenuitem:last') 

我缺少的东西?