2012-05-19 17 views
9

giriş değeri elde, ben bu değer ilk onay kutusu değeri olarak çıkışının tutar işe anlamaya olamaz.jQuery Ben bir onay kutusu bir her döngüde giriş değeri elde etmek çalışıyorum bir .each döngü

$('.custemb, input[name=cb], input[class=multadd]').live("click", function() { 

    $('input[class=multadd]:checked').each(function(index) { 
     val = index + 2; 
     valu = $('input[class=multadd]:checked').val(); 
     multiz = multiz + '&aid' + val + '=' + valu; 
    }); 
}); 

sorun değişken valu çıktısı her döngü değil, döngü geçerli kutusunun toplam ilk kutusunun olduğu, o andaki değer gerekir.

Herhangi bir fikrin var mı?

cevap

31

Sen döngü içinde geçerli eleman erişmek için this kullanabilirsiniz: Eğer seçebilmesi için, şimdiki eleman da geri arama işlevi parametre olarak gönderilir

valu = $(this).val(); 

:

valu = $(elem).val(); 
:
.each(function(index, elem) { 

sonra parametre kullanmak

+0

"elem" zaten girdi öğesi ise, değere erişmek için "elem" üzerindeki seçiciyi neden kullanmalıyım? Teşekkürler – mkmnstr

+1

@mkmnstr: Çünkü elem, eleman için bir jQuery nesnesi değil. '$()' Işlevi yalnızca seçici değil, farklı parametreler alır. Bir öğeye gönderirseniz, yalnızca o öğeyi içeren bir jQuery nesnesi oluşturacaktır. İlk örnekte '$ (this)' işlevi işlevi aynı şekilde kullanır. – Guffa

+0

Açıklama için teşekkürler, şimdi net! Şerefe! – mkmnstr

3
$('.custemb, input[name=cb], input[class=multadd]').live("click", function() { 

    $('input[class=multadd]:checked').each(function(index) { 
     var $this = $(this); 
     val = index + 2; 
     valu = $this.val(); 
     multiz = multiz + '&aid' + val + '=' + valu; 
    }); 
}); 
+1

'.each tıklandığı kontrolünü bulmak için' muhtemelen birini kurtaracak this' –

+1

@AndreasNiedermair 'bir alternatiftir element' ikinci bir parametre' sunuyor arama ve mikro yükselme performansı. İyi çağrı, dostum –

+1

bunu anlamadı ... ikinci parametreyi kullanarak (diğer senaryoda) her bir yinelemenin yöntemini ayıklayın ve bu yüzden belki de sihirli bir yeniden senaryo yaratın ... –

2

Kullanım this()

$('input[class=multadd]:checked').each(function(index) { 
     val = index + 2; 
     valu = $(this).val(); 
     multiz = multiz + '&aid' + val + '=' + valu; 
    }); 
+1

ya da ikinci bir parametre olan' element' ... –

1
var texts= $(".class_name").map(function() { 
    return $(this).val();   
}).get(); 
+0

kullanın. neden .get()? a bir AJAX işlevine gereksinim duyuyorsunuz. – Kivylius

İlgili konular