2009-08-11 5 views
5

私のhtmljQueryのサブセレクターの質問

<div id="x"> 
    <div id="x1"> 
    some text 
    <div>other text</div> 
    </div> 
    <div id="x2">just text</div> 
<div> 

私のコール

私はjqueryのセレクタ、1つのまたは複数の要素であることができるよりも、この要素を持っている:

var x = $("#x"); 

は、今私は(これが必要タブのような内部要素を発見するプラグインです)、最初のDIV要素を介してのみナビゲートし、そのチャイルドトレンドはナビゲートしません。 1.一部textotherテキスト 2.他のテキスト 3.テキストだけ

$.each($($("div"), x).siblings(), function() { 
    alert($(this).html()); 
}); 

ショー: 1.テキストだけ 2.いくつかの私は...

$.each($($("div"), x), function() { 
    alert($(this).html()); 
}); 

ショーをしようとしていますtextother text

これは最も近似していますが、正しい順序で入力する必要があります。なにか提案を ?ありがとう

psそれはプラグインなので私はこれをやりません。

$("#x", "div....") 

私はこの

#(newselector, x) 

答えて

10

それはあなたが、あなたがするvar xに特定のセレクタと定義仮定を考えるすべてのセレクタで動作するはずですので、あなたが$("#x > div")を使用できない場合は、次の

var x = $('#x'); 

// this will select only the direct div children of x whatever the x is 
x.children('div'); 
+0

これは私が必要なものです。ありがとう。以前は子供たちを見たことがありませんでした。 –

1

使用実行する必要があります。あなたのセレクタとして

$("#x > div") 

を - それが唯一のID xあるdivの直接の子を選択します。

+0

こんにちはバディ、私は$(「#xを」使用傾けると述べました)これはプラグインなので、$( "#x")は任意のタイプのセレクタになります。$( "*")にすることができます。 $(selector、jqueryobj) ありがとうございます。 –

+0

@Rodrigo:答えはまだ '>'です。あなたは '$( '> div'、jqueryobj)' –

1

この方法は、あなたのdivのすべての内部テキストを提供します:あなたは複数の子のdivから結合すべてのテキストをしたくない場合は、あなたが唯一の直接テキストノードにアクセスすることができ

x.children('div').each(function() { 
    alert($(this).text()); 
}); 

x.children('div').each(function() { 
    alert(this.childNodes[0].nodeValue); 
}); 

注:それぞれのxvar x = $('#x')によって定義されたjQueryの要素であると仮定。

+0

+1のような他の方法で使うことができます - これもうまくいくでしょう –