6

我正在编写一个函数来更新订单收据,每次用户更新然后关闭产品弹出覆盖。该函数搜索表单的每个输入,然后将信息添加到收据 div,如果其值大于0。我正在尝试获取.html()位于输入字段上方并描述当前项目的标签元素,并将其用作收据中项目的描述。

我试过使用但没有成功:

 - $this.closest('label').html() 
 - $this.prev('label').html()
 - $this.find('label').html()
 - this.element.find('label').html()

这是我的代码。我正在谈论的部分是“标签是”部分......

function updateOrder(){

var items = '';
$('input').each(function(){
    var $this = $(this),
        i_value = $this.attr('value');

    if(i_value > 0){
      items += $this.attr('id') + ' Quantity: ' + i_value + '<br/>' 
      + 'label is: ' + $this.closest('label').html() + '<br/>';  
    }
});

$('#d_reciept').html(items);

}

和一个示例表单项

<tr>
<td class="td_thumbs">
    <div>
        <a class="fancybox" data-fancybox-group="vinyl-banners" href="img/products/vinyl-corporateblue.jpg"> <img src="img/products/thumbs/vinyl-corporateblue-thumb.png" alt="vinyl c-blue"/></a>
        <label>Corporate Blue</label>
    </div>
</td>
<td>6</td>
<td>
    <input id="vinyl-blue" type="number" max="6" min="0" value="0"/>
</td>
</tr>
4

1 回答 1

18

该函数closest为您提供给定选择器的第一个准确度ancestors,您的标签不在第一个祖先中,而是在父级 trchildren中,您需要转到父级 tr 然后使用 find 搜索其父级label

$(this).closest('tr').find('label').html()

或者

$(this).closest('tr :td:eq(0)').find('label').html()
于 2012-12-13T05:46:03.090 回答