2012-12-13 23 views
6

Kullanıcı her güncellediğinde bir sipariş makbuzunu güncellemek için bir işlev yazıyorum ve bir ürün pop-up bindirmesini kapatır. Bu işlev, formun her bir girdisini arar ve daha sonra değeri 0'dan büyükse, bilgiyi bilgi makbuzuna ekler. Giriş alanının üstünde yer alan ve geçerli öğeyi açıklayan ve alıntındaki öğenin açıklaması olarak kullanmak için .html() etiket elemanını almaya çalışıyorum. Başarı olmadan kullanarak denedijQuery yukarıdan etiketi alın

:

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

İşte benim kodudur. Ancak bahsettiğimiz bölüm bölüm ...

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); 

}

ve örnek bir formu öğesi 'etikettir' dir

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

cevap

16

fonksiyon closest size verilen seçicinin ilk accurance vermek ancestors içinde, etiketiniz ilk atalar değil, ana tr children'da değil, Üst tr'ye gitmeli ve ardından üst öğesini label için aramak için bul öğesini kullanın.

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

veya

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

parlak! $ (this) .closest ('tr') bulmak ('label'). html() çalıştı :) – lukeocom

İlgili konular