2012-05-19 24 views
9

我試圖在複選框的每個循環中獲取輸入值,我無法弄清楚如何讓它工作,值不斷輸出爲第一個複選框值。jQuery在.each循環中獲取輸入值

$('.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; 
    }); 
}); 

問題是可變valu的輸出是整體的第一個複選框每個循環,而不是循環的當前複選框,我需要的電流值。

任何想法?

回答

31

您可以使用this訪問當前元素的循環:

valu = $(this).val(); 

當前元素也被作爲參數發送給回調函數,所以你可以把它撿起來:

.each(function(index, elem) { 

然後使用參數:

valu = $(elem).val(); 
+0

我想問爲什麼我必須使用「elem」上的選擇器訪問該值,如果「elem」已經是輸入元素?謝謝 – mkmnstr

+1

@mkmnstr:因爲'elem'是元素,而不是元素的jQuery對象。 '$()'函數使用不同類型的參數,而不僅僅是選擇器。如果你發送一個元素,它會簡單地創建一個包含該元素的jQuery對象。第一個示例中的調用'$(this)'以相同的方式使用該函數。 – Guffa

+0

謝謝你的解釋,現在都清楚了!乾杯! – 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

'。每()控制'提供了第二個參數'element'這是'this' –

+1

@AndreasNiedermair這可能會挽救一個替代查找和微增長性能。好的呼叫,隊友 –

+1

你沒有得到它...使用第二個參數你可以(在其他情況下)提取每個迭代的方法,因此也許創建一個神奇的重用場景... –

2

使用this發現被點擊

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

或使用第二個參數'element' ... –

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

爲什麼需要.get()?它的一個AJAX函數。 – Kivylius