2009-07-30 56 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') 

我缺少的東西?