jQuery:循环使用将ID属性写入数组的元素?

时间:2010-09-17 00:07:01

标签: jquery arrays forms loops matching

我正在尝试根据一系列元素及其id属性以我的形式找到一堆<label>s

例如即可。 [ 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 个答案:

答案 0 :(得分:1)

我可能会使用.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);
});

有关此操作的示例,请参阅here

答案 1 :(得分:0)

试一试。不是直接获得数组的单行解决方案,但我已经测试了它并且它工作正常。

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));
  });
});

答案 2 :(得分:0)

你几乎拥有它,只是来自.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+']'));
})