0

我有一个选择器“ td > a.leftmenuitem:last, div > a.leftmenuitem:last”,我想稍微简化一下。我已经尝试过“ * > a.leftmenuitem:last”、“ td, div > a.leftmenuitem:last”和“ (td, div) > a.leftmenuitem:last”,它们都不像第一个选择器那样工作。如果不为每个选择器创建单独的选择器,这种事情在选择器语法中是不可能的吗?

4

6 回答 6

2

你不能简化:

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

没有共同点,因此您可以使用一个表达式选择所有相关的 td 和 div 元素。例如,如果他们都有 blah 类,你可以这样做:

.blah > a.leftmenuitem:last

但是如果可以避免的话,不要使用这种表达方式。类选择器很慢(与 ID 和标签选择器相比)。

只是有什么问题吗?

a.leftmenuitem:last

?

顺便问一下,你确定:last是正确的选择吗?很多人误用它,误以为:last-child. :last只会匹配一个元素,即页面上找到的最后一个匹配元素。

于 2009-07-30T15:41:53.917 回答
1

更大的,有时更快。当您使用*而不是td时,您的查询会慢得多。

于 2009-07-30T15:39:15.153 回答
0

也许我只是感到困惑,但如果

* > a.leftmenuitem:last

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

a.leftmenuitem:last

反而?

于 2009-07-30T15:41:51.153 回答
0

您正在使用的选择器是

Parent > Child 

匹配由 指定Child 的元素中由指定的所有子元素Parent。除非您<a>在页面的其他地方使用不是<div>and元素的子<td>元素,否则为什么不直接使用

$('a.leftmenuitem:last')

我错过了什么吗?

于 2009-07-30T15:48:32.733 回答
0

我不认为你可以简化它。相反,我会选择提供您对独特课程感兴趣的链接,以便您可以简单地执行"a.<my-unique-class>:last". 这样 jquery 可以简单地扫描所有匹配<a>的标签,而不用担心它们的父元素是一个<td>元素。

于 2009-07-30T15:40:14.903 回答
0

您的选择器很简单。如果您想简化它,您可以执行以下操作:

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

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

于 2009-07-30T15:41:15.663 回答