web-dev-qa-db-ja.com

jQueryを使用して、select要素を除くすべての子を選択する方法

Select要素を含む多くの要素を含むdiv(idは「コンテナ」だとしましょう)があります。 div内のselect以外のすべてを選択したいと思います。私が試したこと:

$("#container *:not(select)")
$("#container *:not(#selectorid)")

//put a div around the select and...
$("#container *:not(#selectorcontainer)")
$("#container *:not(#selectorcontainer *)")
$("#container *:not(#selectorcontainer, #selectorcontainer *)")

また、ワイルドカードの子孫セレクターを使用せずに試してみたので、上記と同様に、

$("#container:not(#selectorid)")
50
Shawn J. Goff

この場合はオプションであるため、ワイルドカードを単純に省略できますが、スペースは保持します。

_$('#container :not(select)');
_

または、すべての子を選択した後、.not()メソッドを使用して選択を除外します。

_$('#container').children().not('select');
_

selectの子がまだ含まれているという問題がある場合は、.not()メソッドを使用してそれらを明示的に除外できます。

_$('#container').children().not('select, option, optgroup');
_

または、直接の子のみを選択します。

_$('#container > :not(select)');
_

インタラクティブjQueryセレクターテスター でjQueryセレクターを試すことができます。例えばdiv :not(ol)またはdiv > :not(ol)を試して、直接の子(_>_)セレクターがどのような違いをもたらすかを感じてください。

73
Martijn Pieters

トラバースメソッドを使用して試すこともできます。

$('#container').children().not('#selectorId');

または最終オプションであること:

$('#container').children().filter(function(){
    return $(this).attr('id') !== 'selectorId';
}
4
Jeff

_:not_、および.not()を使用して選択およびフィルタリング" Live Demo

:not(selector) はまさにこれを行い、いくつかのスタイルがあります。 selector、またはmethodを使用できます。以下は、セレクターの使用例です。

_$("#container :not(select)");
_

これは、_#container_内のすべての子、つまりnot_<select>_要素と一致します。それから、同じ名前で行われますが、異なる方法で実行される必要があるメソッドの除外の方法があります。

_$("#container").children().not("select");
_

これは、一致した要素のchildrenに対して実行されます。この場合、_.not_はフィルターとして機能します。 .filter() を使用して目的の結果を取得する次の例に進みます。このメソッドを使用すると、結果を調べて独自のカスタム関数を提供し、必要なものを選択できます。

.filter()を使用して一致した要素をフィルタリング" Live Demo

_$( "#container" ).children().filter( isNotSELECT ).fadeTo( "slow", .5 );​​​​​​​​​​​​​​​​​​​​​​​​​​​

function isNotSELECT () {
    // Returns TRUE if element is NOT select
    return !$(this).is("select");
}
_

この例では、_#container_のすべての子を選択し、「isNotSelect」と呼ばれる定義済みのフィルターにそれらを渡します。フィルター内では、すべての要素に対してtrueまたはfalseを返します。 trueを返す場合、その要素は結果セットに返されます。 falseを返す場合、その要素は結果セットから削除されます。要素がnotselectかどうかを尋ねています。これにより、すべての選択要素に対してfalseが返され、コレクションから削除されます。

4
Sampson
$(#container select).siblings()

http://docs.jquery.com/Traversing/siblings

2
Mike Kormendy

特定のオブジェクト以外のすべてのJQueryクリックハンドラー
この問題に対する2つのアプローチ: 8票 のアプローチがおそらくあなたが探しているものです。

1
Dirk

多分これは3が#selectであるあなたを助けることができます

次のいずれかを試してください。

$("#container *:not(eq(3))");
$("#container").children().filter(:not(eq(3)));
1
adardesign

あなたが質問から実際に何を望んでいるかは明らかではありません。 :not(select)は、すべての子孫からselectを除外しますが、select子孫からは除外しません。これが問題の場合は、次を試してください

デモ

$("#container *").filter( function(){ 
    return $(this).closest('select').length === 0 
})
1
redsquare