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>孙子<tr>,而不是子子,所以它不会被选中,.children当你尝试它时你会得到一个没有成员的 jQuery 对象(这类似于一个空数组)。

.find改为对后代进行操作。

于 2012-11-06T14:13:38.843 回答
3

我总是发现最好使用 jQuery 选择器尽可能详细。特别是当涉及到类时,因为可以匹配的元素可能不止一种或多种元素。身份证是独一无二的,所以tr#20是矫枉过正(IMO)。

我会使用这样的东西 -

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

如果您仍然想使用您的代码的派生,我还建议您使用closest()而不是parents()(除非我从您的标记中遗漏了一些东西)。您只是在寻找一个父对象,最接近tr的是当前元素的父对象。

于 2012-11-06T14:15:38.137 回答