我在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);
});
但这似乎也很复杂(并且它没有按照规定运作)。
顺便说一句,从性能的角度来看,哪种方法会更方便?答案 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')
一样简单。