2010-09-02 6 views
8

Учитывая неизвестное количество динамически произведенных текстовых входов:.JQuery - Самый простой способ вывести множество (Val) в одну строку

for (var i = 0; i < numInputs2Render; i++) { 
    collectEmails = collectEmails + '<input type="text" id="Email' + i + '" name="Email' + i + '">'; 
} 

мне нужно произвести запятые строки комбинированных входных значений. Предоставляет ли jQuery одношаговое решение или мне нужно будет итерации и вручную построить строку? (Если, если вручную ... Как это выглядит?)

ТНХ

ответ

23

Вы можете использовать .map(), как это:

var emails = $("input[name^=Email]").map(function() { return this.value; }) 
            .get().join(','); 

Это использует attribute-starts-with selector найти входы, то .map(), чтобы получить значения в массив, вы можете .join() в одну строку.

Если они находятся в контейнере, скажем <div id="Emails"> вы можете стройный селектор вниз, чтобы что-то вроде $("#Emails input"), я не могу сказать наверняка, не видя разметку, но ничего с селектором контейнера сделает его более эффективным.

+2

+1 48 секунд быстрее;) Класс может также быть добавлен к элементам ... –

+0

@Felix - Согласен или если у нас есть немного больше контекста, они, вероятно, все в одном контейнере, re генерируется. –

+0

Действительно - для краткости я вытащил «class = emailInput» из OP. Как это изменит ответ? - очень ценим! – justSteve