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