2011-02-03 19 views
2

要素を選択する可能性はありますが、どちらの要素のid-sもわかっていれば、JQuery - 1つの特定の要素を除いた要素全体を選択してください

のような:

<div id="outerdiv"> 
    <div> 
     <div id="innerdiv1"> </div> 
     <div id="innerdiv2"> </div> 
    </div> 
</div> 

私はouterdivを返しますが、このようなinnerdiv2のないと思われる選択をしたい:

<div id="outerdiv"> 
    <div> 
     <div id="innerdiv1"> </div> 
    </div> 
</div> 

は$( '#のouterdiv')のような文があります。ない( '#innerdiv2')かトリックを行う何か? 私はあなたが、と

$('#outerdiv div:not(#innerdiv2)') 

..です、このようにそれを行う機会がある。ここ

おかげ

+1

これは何をしようとしていますか? –

+0

申し訳ありませんが、あなたのコメントを忘れました。私は$( 'form')。serializeArray()を使用してフォームをシリアル化しようとしていますが、フォーム要素の中のテーブルから入力を除外したいとします。 – frenzy

答えて

5

を使用してこのクローンを(解決)+削除()が、イムだけで徘徊することができます外側のdivが含ま:

$('#outerdiv div:not(#innerdiv2),#outerdiv') 

それはそれはあまりにもjQueryのでは動作しますが、実際に有効なCSS3セレクターです。


は、私は、ブラウザのコンソールで少しテストを作ったあなたのコメントに答えるために:選択されたスタックの最初に一致した要素の

a = $('<div id="a"><div id="wrap"><div id="one"></div><div id="two"></div></div>') 
a.find('div:not(#two)').addClass('a') 

Result: 

<div id=​"wrap" class=​"a">​ 
<div id=​"one" class=​"a">​</div>​ 
<div id=​"two">​</div>​ 
</div>​ 

html()方法プリントHTMLコンテンツを。選択したスタックは[#outerdiv、div、#innerdiv1]のようになります。だからhtml()#outerdivのhtmlを表示します。あなたは#innerdiv2せずにHTMLを生成する必要がある場合は、それを取り外しする必要があります。

$('#innerdiv2').detach() 
$('#outerdiv').html() 
+1

ちょうどメモ、これは '#innerdiv2'ではないdiv内のすべてのdivを選択します。これはIDのないdivを含んでいます(まだ '#innerdiv2'が入っています)。 –

+0

ありがとうございましたが、Drackirがカッコ内に書いたことは、問題を抱えていることです。私はinnerdiv2のない構造を私に見せたい($( '#outerdiv div:not(#innerdiv2)、#outerdiv')。html())。 ) – frenzy

+0

説明をありがとう、私が知る必要があったすべて。 – frenzy

1

私はあなたがセレクタでこれを行うことができ、最初に思っていますが、HTMLの構造をしたい場合、私はあなたが実際に持っている必要があります信じています#selectorで一致する要素のリストではなく、html構造体です。これは、Firebugのコンソールログツールを参照しています。console.log()はFirebugのコンソールログツールを参照しています。これはある意味であなたが探しているものを得ます。

私は、他の誰かがこのような答えを持っていたが、彼らはそれを削除しました。理由は分かりません...

関連する問題