Как я могу получить значения из списка (без идентификаторов элементов) с помощью jQuery? - PullRequest
0 голосов
/ 10 апреля 2011

Итак, у меня есть список с множеством предметов, как показано ниже:

<ul id="usersList">
   <li><FORM><INPUT class="eButton" type="button" value="robot669394444" onClick="openWin('robot669394444',1280,720)"></FORM></li> 
   <li><FORM><INPUT class="eButton" type="button" value="robot6693925" onClick="openWin('robot6693925',1280,720)"></FORM></li> 
</ul>

Я хочу получить все значения INPUT, используя jQuery, в массив. Как это сделать?

Ответы [ 3 ]

7 голосов
/ 10 апреля 2011
var vals = $("form input").map(function() {
  return $(this).val();
});

В качестве альтернативы (более аккуратно)

var vals = [];
$("form input").each(function() {
  vals.push( $(this).val() );
});

Вторая альтернатива более чистая, поскольку она оставляет вас с простым ванильным массивом.Результат map() still является объектом jQuery.Так как они (и ведут себя точно так же) массивы, это не может быть проблемой.Но полезно иметь в виду эту тонкую разницу.

1 голос
/ 10 апреля 2011

Не всегда возможно сохранить все параметры (ключи и значения) в объекте, поскольку два входа могут иметь одинаковое имя.

Но вы можете использовать: $('form.myform').serializeArray(), чтобы получить объект типа [{param1:value2}, {param2: value2}]

Или используйте $('form.myform').serializeArray().map(function(e){ return e.value;}) получить список всех значений [value1, value2, ...]

1 голос
/ 10 апреля 2011

Я не уверен, как это сделать с помощью Jquery, но использование простого javascript может помочь

var uL=document.getElementById("usersList");
var i=0;
var inArr=new Array();
while(uL.getElementsByTagName("FORM")[i]){

  inArr.push(uL.getElementsByTagName("FORM")[i].getElementsByTagName('input')[0]);
  alert(inArr[i].value);
  i++;

}

inArr будет содержать все объекты входных элементов в нем ...

...