jQuery: цикл по элементам, записывающим их атрибут ID в массив? - PullRequest
1 голос
/ 17 сентября 2010

Я пытаюсь найти группу <label>s в моей форме на основе массива элементов и их атрибута id.

например .[ input#country , input#other-country ] сможет найти <label for="country"> , <label for="other-country"> и так далее ...

, пока у меня есть этот код:

var LOCATION = {};

LOCATION.option = form.find('input[name=location]').toArray();
LOCATION.labels = [
    $.each( LOCATION.option, function(i, input) {
        $('label[for='+input.id+']');
    })
];

При выходе из системы input.id внутри цикла $.eachЯ получаю правильное записываемое значение, однако не могу найти способ записать свой соответствующий элемент label из цикла $.each в массив LOCATION.labels впоследствии.

Кто-нибудь знаеткак положить их в массив?toArray() тоже вроде не работает ...

Спасибо за чтение.

Ответы [ 3 ]

1 голос
/ 17 сентября 2010

Я бы, наверное, использовал .map():

var LOCATION = {};

LOCATION.option = form.find('input[name=location]').toArray();
LOCATION.labels = $.map( LOCATION.option, function(input) {
  return $('label[for='+input.id+']').get(0);
});

См. здесь для примера этого в действии.

0 голосов
/ 17 сентября 2010

У вас почти было это, просто .push() изнутри .each()

var LOCATION = {};

LOCATION.option = form.find('input[name=location]').toArray();
LOCATION.labels = [];

$.each( LOCATION.option, function(i, input) {
    LOCATION.labels.push($('label[for='+input.id+']'));
})
0 голосов
/ 17 сентября 2010

Попробуйте это. На самом деле это не единственное решение для получения массива напрямую, но я проверил это, и оно отлично работает.

var LOCATION = {};
$(function(){
  var form = $("#form"); //sample form
  LOCATION.option = form.find('input[name=location]').toArray();
  LOCATION.labels = [];
  $.each(LOCATION.option, function(i,input) {        
    LOCATION.labels.push($('label[for='+input.id+']').get(0));
  });
});
...