回答:
コンマを使用します。
'.classA, .classB'
スペースは省略できます。
AND
だろう.classA.classB
。
結合する必要のある複数のjQueryオブジェクトがある場合は、コンマを使用するだけでは不十分な場合があります。
.add()メソッドは、結果セットに選択された要素を追加します。
// classA OR classB
jQuery('.classA').add('.classB');
はより詳細です'.classA, .classB'
が、次のようなより複雑なセレクターを作成できます。
// (classA which has <p> descendant) OR (<div> ancestors of classB)
jQuery('.classA').has('p').add(jQuery('.classB').parents('div'));
私はまさにこの機能のために信じられないほどシンプルな(5行のコード)プラグインを書きました:
http://byrichardpowell.github.com/jquery-or/
「この要素を取得する、またはその要素が存在しない場合はこの要素を使用する」と効果的に言うことができます。例えば:
$( '#doesntExist' ).or( '#exists' );
受け入れられた回答はこれと同様の機能を提供しますが、両方のセレクター(コンマの前後)が存在する場合、両方のセレクターが返されます。
Google経由でこのページにアクセスする可能性のあるすべての人に役立つことを願っています。
"a" || "b"
vs null || "b"
.のバニラJSの動作を検討してください。私たちはここに同じ動作を適用する場合は、$(a).or(b)
返す必要があり$(a)
、それが存在する場合、それ以外の場合は返す必要があります$(b)
。「または」はJSの動作「||」と一致するため、この命名法に問題はないと思います。(または)演算子。
or
。他の人が話しているのは、concat
またはmerge
アクションのようなものです。
element = element1 ||の標準構成を使用したい場合 element2はJavaScriptが真実である最初のものを返すため、正確にそれを行うことができます。
element = $('#someParentElement .somethingToBeFound') || $('#someParentElement .somethingElseToBeFound');
実際に見つかった最初の要素を返します。しかし、おそらくより良い方法は、jQueryセレクターのコンマ構成(見つかった要素の配列を返す)を次のように使用することでしょう。
element = $('#someParentElement').find('.somethingToBeFound, .somethingElseToBeFound')[0];
最初に見つかった要素を返します。
私は時々それを使用して、リスト内のアクティブな要素を見つけるか、アクティブな要素がない場合はいくつかのデフォルトの要素を見つけます。例えば:
element = $('ul#someList').find('li.active, li:first')[0]
これは、アクティブなクラスのliを返すか、存在しない場合は最後のliを返します。
どちらでも機能します。ただし、||として、パフォーマンスが低下する可能性があります。真実な何かが見つかるとすぐに処理を停止しますが、配列アプローチは、すでに見つかった場合でもすべての要素を見つけようとします。次に、|| コンストラクトは、返されるセレクターを見つける前に複数のセレクターを通過する必要がある場合、パフォーマンスの問題が発生する可能性があります。これは、コンストラクトごとにメインのjQueryオブジェクトを呼び出す必要があるためです(これがパフォーマンスヒットかどうかはわかりませんが、それはそれがそうである可能性があることは論理的に思えます)。ただし、一般的に、セレクターがかなり長い文字列である場合は、配列アプローチを使用します。