2012-08-01 19 views
49

Mam serię wierszy z kolumnami i chcę wybrać wartość pola input, które jest w poprzedniej kolumnie do pola input (wprowadzenie ceny), do którego wywołuję funkcję, gdy klucz jest zwolniony.Jquery znajdź najbliższy pasujący element

Próbowałem:

quantity = $(this).parent().parent().children().val() ; 
quantity = $(this).parent().parent().children().closest('.inputQty', this).val() ; 

Ale ani pracy.

Przykładem DOM:

<div class="row"> 
    <div class="column"><input class="inputQty" id="quantity0" /></div> 
    <div class="column"><input class="someOther" id="Other0" /></div> 
    <div class="column"> 
     <div class="cSelect"> 
      <select id="currency0"><option>£</option></select> 
      <input class="price" id="price0" /> 
     </div> 
    </div> 
</div> 

Odpowiedz

104
var otherInput = $(this).closest('.row').find('.inputQty'); 

To idzie w górę do poziomu wiersza, a następnie z powrotem w.

+0

Czy nie ma inna funkcja, która szuka czegoś na tym samym poziomie, co element, na którym obecnie się znajdujesz? Czy zawsze musisz iść w górę i zejść? – Majo0od

+0

To pytanie nie dotyczyło znalezienia czegoś na tym samym poziomie - konieczne było pójście w górę, a następnie powrót - ale tak, na tym samym poziomie znajduje się '.siblings()' i różne 'next ~()' i 'prev ~() 'metody. – Utkanos

+2

dziękuję Szukałem rozwiązania takiego jak to i to działało dla mnie! ale najważniejsze, aby dowiedzieć się więcej o najbliższej funkcji(). Dziękuję bardzo! Davide, –

1

uzyskać .column rodzica elementu this, dostać swoją poprzednią rodzeństwo, a następnie znaleźć żadnych danych tam:

$(this).closest(".column").prev().find("input:first").val(); 

Demo: http://jsfiddle.net/aWhtP/

0

Możesz spróbować:

$(this).closest(".column").prev().find(".inputQty").val();

10

closest() wygląda tylko dla rodziców, zgaduję, co naprawdę chcesz to .find()

$(this).closest('.row').children('.column').find('.inputQty').val(); 
Powiązane problemy