2012-01-03 23 views
1

私はいくつかの幅と高さを持つ複数のdivを持つdivコンテナを持っていると言う。私はクリックされたdiv内のテキストを取得したい。jqueryのdiv内の子divのテキストを取得するには?

<div id="containId"> 
<div>Sometext1 
<div class="description">This is a desc</div> 
</div> 
<div>Sometext2 
<div class="description">This is a desc</div> 
</div> 
<div>Sometext3 
<div class="description">This is a desc</div> 
</div> 
<div>Sometext4 
<div class="description">This is a desc</div> 
</div> 
<div>Sometext5 
<div class="description">This is a desc</div> 
</div> 
</div> 

ユーザーがCONTAINID内のdivをクリックしたとき、私は変数にテキストを得ることができるようにどのように私は(ちょうどSometext番号の一部とされていないもののdiv内の説明のdiv)、それを作るのですか?

+0

なぜこれを行うにはjQueryが必要ですか? – Rob

答えて

1

これはそれを行う必要があります。

$('#containId > div').click(function() { 
    var text = $(this).contents().map(function() { 
     if(this.nodeType !== 3) return null; 
     return this.nodeValue; 
    }).get().join(''); 
}); 

次のように動作します:すべての子ノード、要素ノードだけでなく、を含むjQueryオブジェクトを返します.contents().map()は、テキスト以外のノードをフィルタリングし、テキストノードのテキスト値を取得するために使用されます。

DEMO

これは、最初のものだけでなく、すべてのテキストノードの値を取得します。最初のテキストノードの値だけを取得する場合は、@karim's answer(より簡単)を使用します。

1

使用このような何か:あなたからのdivの第二のレベルを除外したい場合は

var x = this.firstChild.nodeValue 

$("#containId div").click(function(){ 
    var x = $(this).text(); 
}); 

あなたが使用することができ、最初のノードからのみテキスト値が必要な場合クリックし、使用することができます:

$("#containId div").click(function(){ 
    var x = this.firstChild.nodeValue; 
}).find("div").click(function(){ 
    return false; 
}); 
+1

'.text()'には子孫のテキストも含まれます。 –

関連する問題