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

有帮助吗?

解决方案

你无法简化:

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

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

.blah > a.leftmenuitem:last

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

只是有问题吗?

a.leftmenuitem:last

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

其他提示

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

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

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

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

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

也许我只是困惑,但如果

* > a.leftmenuitem:last

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

a.leftmenuitem:last

代替?

您正在使用的选择器是

Parent > Child 

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

$('a.leftmenuitem:last')

我错过了什么吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top