這是我的例子:jQuery對象和form.serialize
var form= $(".anyclass form");
var sf = form.serialize();
$.post(form[0].action,
讓我們假設只有一個在符合標準的頁面形式。
爲什麼我需要使用[0]
訪問操作屬性? 爲什麼.serialize()
沒有[0]
?
對不起,這個新手問題。
這是我的例子:jQuery對象和form.serialize
var form= $(".anyclass form");
var sf = form.serialize();
$.post(form[0].action,
讓我們假設只有一個在符合標準的頁面形式。
爲什麼我需要使用[0]
訪問操作屬性? 爲什麼.serialize()
沒有[0]
?
對不起,這個新手問題。
我認爲你要做到這一點,如:
$.post(form.attr('action'));
順便說一下:您正在使用.anyclass類獲取元素中的所有表單。這將返回多個表單(如果存在)。如果你給了表單一些id並且這樣做:$('#myForm'),你會更好。
您的form
從$(...)
返回的變量是一個jQuery對象,可能包含對許多表單元素的引用。
要訪問內的基礎原生DOM元素該對象,您需要使用數組符號(如上)或form.get(0)
。
至於使用上的差異,.serialize()
是jQuery對象的一種方法,所以必須在form
上調用。
然而.action
是一個DOM屬性,所以你需要使用本機的DOM元素來訪問它,儘管你可以或者已經使用:
form.attr('action')
的[0]只是給你的直DOM對象形式
形式=== jQuery對象
形式[0] === DOM對象
這是因爲.serialize()是一個適用於所有匹配元素的jQuery方法。
我沒有看過的來源,但我敢打賭,有這樣的事情:
return this.each(function(i, val){
// do stuff
})
當你這樣做form[0].action
,你實際上返回的第一個元素(本地DOM元素)設置匹配的元素,然後訪問它的本地屬性
lol,我喜歡*指出底層問題*的答案。 – rlemon