2009-07-30 13 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は、1つの要素、ページにある最後に一致する要素と一致します。

+0

ああ、はい!もちろん、最後の子供は完全に動作します。私はなぜ単にa.leftmenuitemを使っているのだろうと思っていた。最後はうまくいかなかった。ありがとう! – DLH

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') 

を使用しないで、私は何かが足りないのですか?