在Jquery中选择给定表单的所有输入

时间:2010-01-18 18:36:41

标签: jquery-selectors

我在jquery中有一个表单对象,我想选择此表单的所有输入。

假设我的表单对象名为表单。如果表单有id,我可以做

var id = form.attr('id');
var inputs = $('#' + id + ' input');

如果不是,我可以检查一下,然后手动添加一个临时ID,进行选择,并删除id(或者只是保留它)。但这看起来太复杂了,必须有一个更简单的方法,但我无法找到它。

另一种可能的方式(我无法工作)就像是

var inputs = $('input').filter(function() {
    var parents = this.parents();
    return ($.inArray(form, parents) != -1);
});

但这似乎也很复杂(并且它没有按照规定运作)。

顺便说一句,从性能的角度来看,哪种方法会更方便?

2 个答案:

答案 0 :(得分:2)

http://docs.jquery.com/Traversing/find

form.find('input')

应该做我想的伎俩。为了以防万一,如果您尝试获取所有输入字段以获取其当前值并使用AJAX提交它们,则可以使用表单中的。serialize方法:

data: form.serialize(),

就您的性能问题而言,我相信您的第一种方法更有效,第二种方法会迭代页面上的每个输入。从jQuery 1.4开始,第一种方法肯定更有效,基于对象ID的查询最初得到了显着增强。

答案 1 :(得分:1)

我不确定你在这里尝试做什么...如果页面上有多个表单,那么你必须拥有某种类型的身份...一个pernt,id,一个类的东西。如果您只有一个表单,那么就像$('form input')一样简单。