2012-05-19 6 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

'.each()' предлагает второй параметр '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()? a AJAX. – Kivylius

Смежные вопросы