jQuery,无法获得textbox的价值

时间:2012-11-06 14:11:23

标签: javascript jquery html

在我的代码中,我可以获取对象而不是值。如何获取.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);

    });

});

2 个答案:

答案 0 :(得分:6)

<input><tr>的孙子,而不是孩子,因此.children不会选择{{1}}并且当你尝试它时会得到一个没有成员的jQuery对象(这类似于一个空数组)。

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

答案 1 :(得分:3)

我总是发现最好是使用jQuery选择器尽可能冗长。特别是当涉及到类时,可以有多个元素或类型可以匹配的元素。 Id是唯一的,因此tr#20过度杀伤(IMO)。

我会用这样的东西 -

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

如果您仍想使用代码的衍生产品,我还建议您使用closest()而不是parents()(除非您的标记中缺少某些内容)。您只需要查找一个父对象,即距离当前元素的父级最近的tr