Получить массив из значений класса

0

Я пытаюсь вернуть массив, выбирая значение класса, но я получаю только последнее значение.

Итак, это:

<input class="test" value="Example 1" />
<input class="test" value="Example 2" />
console.log($(".test").val());

Возвращает мне это

Example 1

Как я могу получить все значения класса? Я хочу сохранить его в переменной, чтобы я мог отправить его с помощью AJAX.

Теги:

7 ответов

3
Лучший ответ

Вы можете сделать это с помощью метода .map() например:

var data = $(".test").map(function () {
    return this.value;
}).get();   // ["Example 1", "Example 2"]
1
var values = [];
$(".test").each(function(){
   values.push($(this).val());
});
console.log(values);
  • 0
    не видел твой ответ, когда я написал свой ... расслабься. + вы не полностью ответили на его вопрос, он хотел получить массив значений.
  • 0
    без проблем. , .но я не вижу слово слово в его вопросе
Показать ещё 1 комментарий
1

это потому, что существует множество элементов, которые удовлетворяют селектору ".test", поэтому $ (". test") возвращает массив со всеми экземплярами, которые имеют класс "test", поэтому вам, вероятно, следует перебирать массив, который он возвращает, например это;

$(".test").each(function(){
   console.log($(this).val());
});
0

Попробуйте этот код:

var myArray = $('.test').map(function(){
   return $(this).val();
}).get();

Вы получите переменную myArray как массив входных значений, проверьте это здесь:

http://jsfiddle.net/CG8kj/

0

Попробуй это

var x = $(".test");

это вернет массив элементов, а затем вы можете обработать массив, чтобы получить все значения.

  var x = $(".test");
            for (var i = 0; i < x.length; i++) {
                alert(x[i].value);
            }
  • 0
    Могу ли я знать, почему я был понижен?
0

Имейте в виду, что $('.test') уже возвращает массив со всеми элементами в DOM, которые имеют test класса.

Поэтому, если вам нужны все их значения, просто перейдите по возвращенному массиву, сохранив значения в новом массиве.

0

Функция $(".test") уже возвращает массив; массив элементов, которые имеют "тест" класса. Таким образом, одним из вариантов было бы сопоставление этого массива с массивом значений. Например

var valueArray = $.map($(".test"), function(input, indx) {
    return input.value;
});
for (var i = 0, v; v = valueArray[i]; ++i) {
    console.log(v);
}

Вы также можете выполнять итерацию с each() и создавать свой собственный массив

  • 0
    Ах, я слишком медленно набираю :) другие уже предлагали то же самое :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню