我正在编写一个函数来在每次用户更新时更新订单收据,然后关闭产品弹出式叠加层。
该函数搜索表单的每个输入,如果其值大于0
,则将信息添加到收据div。我试图让标签元素的.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>
答案 0 :(得分:17)
函数closest
首先给出ancestors
中给定选择器的准确性,你的标签不在第一个祖先,而是在父tr children
中,你需要去父母tr然后使用find在其父级中搜索label
。
$(this).closest('tr').find('label').html()
或
$(this).closest('tr :td:eq(0)').find('label').html()