Как получить класс ввода внутри jQuery каждого цикла? - PullRequest
2 голосов
/ 10 марта 2011

У меня есть функция, которая добавляет входы в элемент списка при нажатии на ссылку.Затем я перебираю эти входы, используя каждый цикл, используя приведенный ниже код.Он работает правильно, как показано, однако вместо использования field.name я хочу использовать класс ввода в качестве ключа массива, но когда я пытаюсь сделать это, класс отображается как неопределенный.

Воткод, который я сейчас использую:

var values = {};
$.each($('li :input').serializeArray(), function(i, field) {
    values[field.name] = field.value;
});

Вот код, который у меня есть внутри элемента списка после добавления скрытых входов с помощью jQuery append:

<li><input type="hidden" name="group" class="group" value="2"/><input type="hidden" name="condition" class="condition" value="isany"/><input type="hidden" name="value" class="value" value="1,2"/></li>

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

Может ли кто-нибудь помочь с этим?

Ответы [ 3 ]

4 голосов
/ 10 марта 2011

try:

var values = {};
$('li :input').each(function() {
    values[$(this).attr('name')] = $(this).val();
});

Эта работа, когда я тестировал.

var values = {};
$('li input').each(function() {
    values[$(this).attr('class')] = $(this).val();
});
alert(JSON.stringify(values));
1 голос
/ 10 марта 2011

Я не могу понять, как заставить его работать с $ .serializeArray, но это работает.(замените console.log на $("body").append, если у вас нет консоли).

$.each($('input'),function(){console.log(this.className)})

Обратите внимание, что вы используете собственный javascript this вместо объекта jquery $(this)

0 голосов
/ 10 марта 2011
var values = {};
$.each($('li :input').serializeArray(), function(i, field) {
    values[$(field).attr('class')] = field.value;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...