2012-12-13 12 views
6

Piszę funkcję aktualizowania potwierdzenia zamówienia za każdym razem, gdy użytkownik aktualizuje, a następnie zamyka wyskakującą okienek produktu. Funkcja przeszukuje każde wejście formularza, a następnie dodaje informacje do div odbioru, jeśli jego wartość jest większa niż 0. Próbuję pobrać .html() elementu etykiety znajdującego się powyżej pola wejściowego i opisującego bieżący element oraz użyć go jako opisu pozycji w paragonie.jQuery pobiera etykietę z powyższego

Próbowałem, używając bez powodzenia:

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

Oto mój kod. Sekcja mówię jest „etykieta jest” częścią ...

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

}

i element forma próbka

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

Odpowiedz

16

Funkcja closest daje pierwszy accurance danego selektora w ancestors, twoja etykieta nie znajduje się w pierwszych przodkach, raczej w rodzicu tr children, Musisz przejść do rodzica tr, a następnie użyć wyszukiwarki, aby wyszukać swojego rodzica na label.

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

lub

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

genialny! $ (this) .closest ('tr'). find ('label'). Działa html() :) – lukeocom

Powiązane problemy