2012-03-31 11 views
4

私はいくつかのテーブル行を循環しようとしています。jQuery each - (this)とクラス指定を組み合わせる

<table> 
    <tr id="ucf48"> 
    <td class="ucf_text"> 
     <input name="ucf_t48" value="Ann becomes very involved in the text she is reading." type="text"> 
    </td> 
    </tr> 
    <tr id="ucf351"> 
    <td class="ucf_text"> 
     <input name="ucf_t351" value="Ann is a fast and confident reader." type="text"> 
    </td> 
    </tr> 
</table> 

を私はサイクルにこのコードを使用しています:

$('#ucf tr').each(function(i,obj){ 
    var cn=$(this).attr('id').substr(3); 
    var t=$(this +'.ucf_text input').val(); 

    console.log("Row "+i); 
    console.log("Cnum: "+cn); 
    console.log(t); 
}); 

コンソール出力は次のとおりです。

Row 0 
Cnum: 48 
Ann becomes very involved in the text she is reading. 
Row 1 
Cnum: 351 
Ann becomes very involved in the text she is reading. 

今私の炎誰かの前に、私が知っている次のように単純化された行があります私は '名前'を使って欲しいデータを参照することで、これを別の方法で行うことができます。しかし、なぜ私のcnum変数は 'this'に従っていますが、t変数はありませんか?

ありがとうございました。あなたが行うと

+0

は、皆、ありがとうございました。私は今日いくつかの事を学びました:) – Nick

答えて

5

var t=$(this +'.ucf_text input').val(); 

thisは、文字列に正しく変換されていません。

試してみてください。

var t=$(this).find('.ucf_text input').val(); 
3

var t=$(this +'.ucf_text input').val();

あなたはDOMノードの文字列を連結しようとしています。 各行の子供が欲しいと思いますか?これは次のようになります。
var t=$(this).find('.ucf_text input').val();

3

実は、これは$(this) [TR]クラスに.ucf_text

を持っていないされているので、私はあなたがそれ

下のTDを意味だと思いますが、意味を表すためにスペースを追加します。子供。 :)

var t=$(this +' .ucf_text input').val(); 
      ^Space! 

EDIT: か!

var t=$(this).children('.ucf_text').children('input').val(); 

検索は道クーラーですが、私は間違った答えを残していないのために編集し、多少元になりたかった、しかも...たぶん、あなたが入力する明確なパスが必要ですか?

+0

'this'は正しく文字列に変換されていません。 – iambriansreed

+0

よろしくお願いします。 'this'はHTMLDomElementであり、すべて...尊厳のため編集されました。代理人のためではありません –

+1

+1は尊厳のためです。 – iambriansreed

3

DOMオブジェクトと文字列を連結することはできません。

簡単セレクタの文脈としてthisを指定することによって、この問題を解決することができ:

var t = $('.ucf_text input', this).val(); 

セレクタは、あなたの場合には、すなわち表の行、所定のコンテキスト内の要素に一致するようにすることで。あなたは既に2つの正しい答えを持っているが、ちょうど多様性のために、ここでそれを行うための別の方法です

3

var t = $('.ucf_text input', this).val();

関連する問題