2012-02-17 4 views
1

構造化マークアップを保持する以外に、CSSやjQueryについては、マルチレベル/ツリーセレクタを使用する正当な理由はありますか?私は、多くの場合、DOMには、他の要素がありませんにもかかわらず、選択のこのタイプを使用している人々を参照してくださいjQueryやCSSを使用しているときに、マルチレベル/ツリーセレクタに正当な値がありますか?

$('#grand-parent > #parent > .child').doSomething();

#grand-parent #parent .child

:私はマルチレベル/木セレクタによって意味

なぜなら、エンドセレクタ(.child)が一度しか存在しないシナリオでは、それを使用する理由があるかどうかという疑問があるからです。

これは主観的ではなく、本物の答えを示すことができる質問です。私が必要性や理由を言うとき、私はパフォーマンスの向上や要素がこのように選択されていないときに発生する可能性のあるエラーなどを意味します。

また、CSSの有無にかかわらず、CSSを見たことがあるので、副問合せとして、jQueryの選択肢よりも大きい記号が必要ですか。>

マルチレベルセレクタの使用に関する回答/説明は非常に高く評価されます。

みなさんこんにちは!

答えて

1

#MyID.Myclassのような問題なしでセレクタを作ったので、>記号は必要ありません。パフォーマンスに関しては、DOM内のすべてのものを反復してコントロールする必要はありませんが、これは最適ですが、もしあなたが後にすることが単なるクラスであれば、それをフィルタリングする理由はありません。また、他のポスターは、脆いコードを作成することについて正しいです。ローカルクライアントの処理能力は重いので、データを取得するために余分な時間を費やすことは、起こり得るプログラミングエラーや複雑さに比べて問題ではありません。

1

セレクタが入れ子式要素を伴う場合には時々便利です:

$('dl.main-list > dt').css('font-weight', 'bold'); 

ネストされた<dl>リストがめちゃくちゃされませんこの方法。

一般的に私の例のようなもの以外の文書構造についての仮定は、私の意見ではかなり壊れやすいものです。

+0

ええ、同じネスト内に複数のHTML要素が選択されている場合、または複数のネストがある場合の使用を理解できました。 'ul> li'。しかし、ユーザ定義のクラスが最も親の選択ポイント(私の特定のコーディングスタイルで)であり、リストや他のデフォルトのネストされた要素に依存しない場合、私は最良のアプローチを考えています。できるだけノードを閉じて、必要に応じて/をツリーの上に移動します。 – Avicinnian

1

私はいつも「スクリプトからマークアップを分離する」ことを忠実に主張し、レイアウトに基づいて要素にアクセスするために複雑なセレクタを使います。複雑なセレクタを使用することはスタイリングの観点からは意味がありますが、複雑なセレクタを使用しても、維持するのが難しくなります。

関連する問題