简化jQuery Selector

时间:2009-07-30 15:37:07

标签: jquery syntax selector simplify

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

6 个答案:

答案 0 :(得分:2)

你无法简化:

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

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

.blah > a.leftmenuitem:last

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

只是有问题吗?

a.leftmenuitem:last

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

你的选择器很简单。如果你想简化它,你可以做类似的事情:

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

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

答案 4 :(得分:0)

也许我只是困惑,但如果

* > a.leftmenuitem:last

会对你有用,那么为什么不选择

a.leftmenuitem:last

代替?

答案 5 :(得分:0)

您正在使用的选择器是

Parent > Child 

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

$('a.leftmenuitem:last')

我错过了什么吗?