2012-12-13 56 views
6

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

我一直在使用没有成功尝试:

- $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> 

回答

16

功能closest给你定选择的第一accurance在ancestors中,您的标签不在第一个祖先中,而是在父亲tr children中,您需要转到父tr,然后使用find来搜索其父亲label

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

$(this).closest('tr :td:eq(0)').find('label').html() 
+0

辉煌! $(this).closest('tr')。find('label')。html()working :) – lukeocom