2012-02-14 8 views
1

を返します:私がする必要がどのようなjQueryのvalが、私は自分のアプリケーションで、次のHTMLコードを持って、空の文字列

<tr style="cursor:pointer;"> 
    <td>100101</td> 
    <td>Monkey</td> 
    <td>Nuts<td> 
    <td>Cow</td> 
    <td>Soup</td> 
    <td>Chicken</td> 
    <td>Leg</td> 
    <td class="non-clicky"> 
     <p>Click</p> 
    </td> 
</tr> 

は、私は非clickyクラスをクリックしたときに最初のTDの値を取得することです。

:100101.

だから、代わりに私はコードを試してみました、空の文字列を返されない結果 - 「」の値で

alert($('.non-clicky:first').parent().children('td:first').val()); 

このコードの結果: は、だから私は、コードを持っています

alert($('.non-clicky:first').siblings(':first').val()); 

これも値が空の文字列になっていますが、なぜ.val()が正しい結果の代わりに空の文字列を返すのですか?

私は以下のコードを試しましたが、これは私に正しい答えを与えますが、なぜvalがそうでないのか不思議です。 valとtextの違いは何ですか?

alert($('.non-clicky:first').siblings(':first').text()); 
// and 
alert($('.non-clicky:first').parent().children('td:first').text()); 

注:

上記のコードは$('.non-clicky:first')これを利用し、それはjQueryのクリックイベント内であろうコードで私のテスト目的のためだけでした。

+0

あなたが[ドキュメント](http://api.jquery.com/val/)を読んでいないようです。 –

+0

"" .val()メソッドは主に入力 ""などのフォーム要素の値を取得するために使用されます。これは主に他のものにも使用できることを意味します。 –

+0

そして、「もう1つの」使用が要素のテキストコンテンツを取得していると思いますか?しかし、私はあなたのポイントを見ます。 –

答えて

4

.text(),.val()は、入力要素の値を取得するためのものです。

+0

ありがとう@ kevin-b、あなたの答えを少し編集しましたが、それはマークを打つ。 –

+0

@aspect私はいつも '.val()'と '.text()'を扱う方が良いかどうか疑問に思っていましたが、どちらも長い間、互換性の問題があり、 '.val()'を非入力の '.text()'に似せばコードが膨らんでしまいます。 –

0

使用text()

$('.non-clicky').click(function(){ alert($(this).siblings().first().text()); }); 
+0

なぜ質問でvalの代わりにテキストを使う必要があるのか​​尋ねていました。問題の解決策ではありません。 –

+0

[jQuery API?](http://api.jquery.com/) – elclanrs

関連する問題