按属性分隔元素数组

时间:2013-02-06 19:24:39

标签: javascript jquery arrays

假设我有一个包含多个输入的表单,我使用一个非常标准的jQuery语句来获取它们:

var inputs = $("#some-form").find("input")

现在,我想对这些输入采取行动,但是我想说我想将单选按钮和/或复选框组视为一件事。如何将inputs拆分为按属性分组的元素,例如name。请注意,我不知道处理开始时名称是什么。

从人的角度来说,我需要逻辑确实做一些事情:

  

让我迭代输入列表。对于每个输入,让我检查一下   看它是否已经添加到占位符数组中。如果是这样,   不要管它。如果没有,请添加它和所有名称的名称   占位符数组(作为子数组)。

基本上,我喜欢这样的东西:

[[<input type="text" name="name1">], [<input type="radio" name="name2">,<input type="radio" name="name2">]]

1 个答案:

答案 0 :(得分:2)

尝试在过滤器中使用属性选择器。

var $formInput = $('#some-form').find('input');
var inputText = $formInput.filter('[type=text]')
var otherInput = $formInput.filter("[type=radio]")
                          .add($formInput.filter('[type=checkbox]'));

甚至更好

var otherInput = $formInput.filter(function () {
                     return this.type == 'radio' || this.type == 'checkbox';
                  });

DEMO: http://jsfiddle.net/utwaf/

  

如何将输入拆分为按属性分组的元素,比如名称

var elements = []; //elements by name
var $formInput = $('#some-form').find('input');
elements.push($formInput.filter(function() { 
   return this.name == 'name1';
});
elements.push($formInput.filter(function() { 
   return this.name == 'name2';
});

注意:推入数组的所有元素都是jQuery对象。