VIDTAKER.COM

Q&A

どのように私はjQueryのselect要素を除くすべての子を選択するために使用しない


私はのdiv(idはselect要素を含めた多くの要素と"コンテナ")と言うのを聞かせている。私は選択を除いてdivのすべてを選択すべてにしたいです。試みた事をした私は:

$("#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)")



6 Replies

1)

これは任意この場合はのように単純に、ワイルドカードを省略することができますが、スペースを維持する:

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

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

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

あなたの問題がある場合は、子供のselectまだ含まれている場合は、明示的には()メソッドでこれらのを除外できる:

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

または選択の直接の子のみ:

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

あなたがでセレクタをjQueryを試してできるインタラクティブなjQueryのセレクタテスターのフィードバックを簡単に、たとえばしようdiv :not(ol)またはdiv > :not(ol)の感触を得るためにどのような違いの直接の子( > )セレクタができます。


2)

http://stackoverflow.com/questions/1109835/quick-html-jquery-question
問題に2つのアプローチ:1つは8票ですおそらく1つを探しているあなたは。


3)

しない(セレクタ)機能があります。あなたはそれを把握することはできませんしかし、もしあなたが、すべての子を選択することができますし、その後、任意のSELECT要素を削除します。それか、手動でこれらの特定の要素をいつでもあなたのコレクションを保存実行しているスキップします。


4)

また、それはメソッドを横断使用して試すことができます:

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

または最後のオプションされて:

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

5)

それが問題にされていない明らかに何から必要な場合は、実際に。:ではなく、(選択の子孫すべてを選択してからアウト)がフィルタリングはしません子孫を選択します。これはあなたの問題がある場合を試して、次の

デモ

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

6)

3は選択し#ここでもしかすると、このことができますに役立つ

(しようとするのいずれかの:$"#コンテナ*:しない(式(3))$("#コンテナ")。お子様()。フィルター(:しない(式(3)));