jQuery

2011-12-28 9 views
11

Aşağıdaki biçimlendirme var olan tıklanan elemanın en yakın giriş değerini alma:jQuery

<div class="options"> 
    <div class="quantity"> 
    <label>Qty:</label> 
    <input type="text" name="quantity" value="1"/> 
    </div> 
    <div class="buttons"> 
    <a href="#" class="add">Add Item</a> 
    </div> 
</div> 

jQuery kullanarak 'ekle' sınıfına binded bir tıklama olayı var. Bunu tıkladığımda, name = "quantity" değerini almak istiyorum, ancak 'add' seçeneğinin tıklandığı ve çeşitli miktar alanlarının olduğu birkaç yer var.

'En yakın' giriş değerini almaya çalışıyorum. 'En yakın' ve 'findall' kullanmayı denedim, ama şans yok.

Bunu jQuery kullanarak nasıl edinebilirim? Teşekkür ederim!

+1

Bir jQuery yöntemi 'findall' hiç duymadım. [Traversal methods] (http://api.jquery.com/category/traversing/) üzerinden gitmenizi ve onlara bir göz atmanızı öneririm. "en yakın" zaten iyi bir başlangıç. Lütfen şimdiye kadar sahip olduğunuz kodu gönderin. –

cevap

26
$(".add").on("click", function() { 
    var val = $(this).closest("div.options").find("input[name='quantity']").val(); 
}); 

strateji buradadır:

  • Kullanım closest verilen seçici eşleşen en yakın atası bulmak için
  • Sonra input ile bulmak için find kullanmak (bu durumda sınıfın option ile div) attribute equals selector kullanarak verilen name.
  • Son olarak, input değerini almak için val kullanın.
3

Uygun kapama elemanını bulmak için closest'u kullanmanız ve ardından buradan çalışmanız gerekir.

$(link).closest(".options").find("input[name=quantity]") 
0
$(this).parent().parent().find("input[name=quantity]").val() 

Bu hile

+1

Bu işe yaramaz. '$ (this) .parent()' div.buttons' olacaktır. –

+0

İyi nokta benim kötü ben hala en yakın kullanarak öneririm ama benim cevabım düzeltmek için herhangi bir şekilde düzeltilmiş –

0

Ben yalnızca aynı seviyede elemanları ile yakın çalışmalarını tahmin yapmalıdır.

Neden giriş alanına id atıp $('#input-id') seçmeli?

Veya sınıflarından birini içeriden geçmesine ve orada girişi bulmak: $(this).parents('.options:first').find('input');

+0

'en yakın 'DOM ile en yakın aceleyi seçiciyle eşleştiriyor. ebeveynler, seçiciyle eşleşen tüm ataları bulur. –

+0

Sadece tamir, addad: ilk. En yakın iş aramaları yukarı doğru mu? Yine daha akıllı .. :) – Kristian