2014-02-14 3 views
0

Учитывая HTML:JQuery .val() возвращают HTML (не значение поля ввода)

<div id="rearGearInputContainer"> 
    <input id="rear1"></input> 
    <input id="rear2"></input> 
    <input id="rear3"></input> 
    <input id="rear4"></input> 
</div> 

В консоли Chrome I Тип:

$('#rearGearInputContainer').find("input").each(function() {return $(this).val();}) 

И результат представляет собой массив от html:

[<input id=​"rear1">​, <input id=​"rear2">​, <input id=​"rear3">​, <input id=​"rear4">​] 

... не массив значений поля ввода, как я ожидал. Может ли кто-нибудь объяснить, почему? Благодарю.

+0

положить в jsfiddle и поделиться ссылкой плз. –

+0

Ни одно из ваших полей ввода не имеет значений – slash197

ответ

5

Вы пытаетесь вернуться в каждом методе, который я не думаю, что вы хотите. Я думаю, что вы имеете в виду использовать метод map():

var vals = $('#rearGearInputContainer').find("input").map(function() { 
    return $(this).val(); 
}).get() 

JSFiddle

+0

Спасибо! Извините за задержку - уведомления из StackOverflow не настроены правильно, поэтому я предположил, что никто не ответил. Это решает мою проблему, но я все еще не могу понять, почему .each() не сделал того, что я хотел. JQuery docs: _ ". Each(): Итерация над объектом jQuery, выполнение функции для каждого согласованного элемента." _ Любые идеи? – guzman

+0

'.each()' не будет возвращать массив, он возвращает объект jQuery. Вы можете использовать '.each()' здесь, но вам нужно будет нажать на существующий массив внутри цикла. http://jsfiddle.net/oGeez/ZDV5C/2/ – George

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