获取父项子项输入值的未定义错误

时间:2011-10-18 09:40:16

标签: javascript jquery

我有一个看起来像这样的表:

<table>
    <tr>
       <td class="packing-vol">0.19</td>
       <td class="qty-cell"><input type="text" name="qty[]" class="qty" value="2" /></td>
     </tr>
     <tr>
       <td class="packing_total">0.70</td>
       <td class="qty-cell"><input type="text" name="qty[]" class="qty" value="1" /></td>
     </tr>
</table>

我正在遍历每个出现的.packing-vol获取它的文本,然后我想从同一行获取数量,所以我转到它的父进程然后钻进.qty类。但当我提醒(数量)时,我收到'未定义'的消息。

var total = 0;

jQuery('.packing-vol').each(function(i) {

    var qty = jQuery(this).parent("td.qty-cell .qty").val();
    alert(qty);

    var cur = parseFloat(jQuery(this).text());
    if(!isNaN(cur)){
        total = total + cur;
    }

});

3 个答案:

答案 0 :(得分:3)

我认为你应该这样做:

var qty = jQuery(this).parent().find("td.qty-cell .qty").val();

你需要升级1级(使用.parent),然后使用.find

找到你的字段

答案 1 :(得分:2)

parent只是向上一层。你不能再用它来进入树内了。

parents向上是多个级别。你不能再用它来进入树内了。

您可以使用parent / parents,然后使用find做您想做的事情,甚至更好:

var total = 0;
jQuery('.packing-vol').each(function(i) {

    var qty = jQuery(this).parent().children('.qty-cell').children('.qty').val();
    alert(qty);

    var cur = parseFloat(jQuery(this).text());
    if (!isNaN(cur)){
        total = total + cur;
    }
});

您也可以使用find,但它比直接进入更慢,因为它必须搜索DOM对象。

但你也可以这样做:

var qty = jQuery(this).parent().find("td.qty-cell .qty").val();

答案 2 :(得分:1)

而不是

var qty = jQuery(this).parent("td.qty-cell .qty").val();

尝试:

var qty = jQuery(this).parent().find(".qty").val();