1

私のコードでは、オブジェクトは取得できますが、値は取得できません。テキストボックスの値を取得するにはどうすればよい.cupsですか? ありがとう。

HTML:

<tr id="20">

      <td class="description">CHEESE,FONTINA</td>
      <td><input type="text" class="cups" value=""></td>
      <td><input type="checkbox" class="breakfast"></td>
      <td><input type="checkbox" class="lunch"></td>
      <td><input type="checkbox" class="dinner"></td>
      <td><input type="checkbox" class="snack"></td>
      <td><input type="checkbox" class="favorites"></td>
      <td><label class="addFood"><input type="button" class="input_text_custom input_button" value="Add"></label></td>

</tr>

JS:

$(document).ready(function () {

    $('.addFood').click(function () {

        var tr = $(this).parents('tr');

        var foodId = tr.attr('id');  // works
        var servings = tr.children('.cups');  // returns [object Object]
        var servings = tr.children('.cups').val();  // returns undefined
        alert(servings);

    });

});
4

2 に答える 2

6

は子ではなく<input>の孫であるため、 によって選択されず、試してみるとメンバーを持たない jQuery オブジェクトが得られます (これは空の配列に似ています)。<tr>.children

.find代わりに、子孫に作用するものを使用してください。

于 2012-11-06T14:13:38.843 に答える
3

jQuery セレクターを使用する場合は、できる限り冗長にすることが最善であると常に考えています。特にクラスに関しては、一致する可能性のある要素または要素のタイプが複数存在する可能性があるためです。Id はユニークなのでtr#20やり過ぎです (IMO)。

私はこのようなものを使用します -

var cupsValue = $("#20 input.cups").val();

それでもコードの派生物を使用したい場合は、and を使用closest()しないことをお勧めしますparents()(マークアップに欠けているものがない限り)。tr現在の要素の親である最も近い親オブジェクトを 1 つだけ探しています。

于 2012-11-06T14:15:38.137 に答える