jQuery对象和form.serialize

时间:2011-09-27 12:58:19

标签: jquery

以下是我的例子:

var form= $(".anyclass form");
var sf = form.serialize();
$.post(form[0].action,

让我们假设页面中只有一个符合条件的表单。

为什么我需要使用[0]访问action属性? 为什么.serialize()没有[0]

抱歉这个新手问题。

4 个答案:

答案 0 :(得分:3)

我想你想这样做:

$.post(form.attr('action'));

顺便说一下:你正在使用类.anyclass获取元素中的所有表单。这将返回多个表单(如果存在)。如果你给表单一些id,那就更好了:$('#myForm')。

答案 1 :(得分:2)

form返回的$(...)变量是一个jQuery对象,可能包含对许多表单元素的引用。

要访问该对象中的基础本机DOM元素,您需要使用数组表示法(如上所述)或form.get(0)

至于使用上的差异,.serialize()是jQuery对象的一个​​方法,因此必须在form上调用。

但是.action是一个DOM属性,因此您需要使用本机DOM元素来访问它,尽管您可以使用它:

form.attr('action')

答案 2 :(得分:1)

[0]只为你提供表格的直接DOM对象,

form === jquery object
form [0] === DOM对象

答案 3 :(得分:1)

那是因为.serialize()是一个适用于所有匹配元素的jQuery方法。

我没看过消息来源,但我打赌有类似的东西:

return this.each(function(i, val){
    // do stuff
})

当你执行form[0].action时,你实际上是在匹配元素集中返回第一个元素(本机DOM元素),然后访问它的本机属性