2016-04-01 41 views
0

我在javascript和jQuery的新的,我只是念想$('#myForm').get(0).submit()

至於我的理解代碼,該myForm是一個<form>一個ID,它應該是一個唯一的ID。那麼爲什麼這個代碼使用get(0)這似乎選擇器返回一個數組。會有多個具有相同ID的html元素myForm

+0

使用Id時,應該只有一個。不要擔心得到(0)請參閱http://stackoverflow.com/a/1053890/1071091 – Captain0

+1

**任何** jQuery選擇器返回數組(實際上是array-lke對象)**不管**的結果數火柴。 – hindmost

回答

1

jquery總是返回一個數組,但您可以像使用單個對象一樣使用它。

如:

$("#someID").submit(); 

或任何其他jQuery函數:

$("#someID").html("<h1>test</h1>"); 

你也可以得到的JavaScript元素:

$("#someID")[0]; 
+0

jQuery選擇器總是返回一個Object。用typeof檢查它。 – PVL

+0

試試這個:) 'var x = new Array();' 'typeof(x); //返回對象;)' – warch

+0

哦,對了,我忘記了檢查javascript會更復雜,因爲一切都是實際的對象。你可以用這個if檢查它(Object.prototype.toString.call(x)==='[object Array]')alert('Array!'); } – PVL

1

對於ID選擇,jQuery使用JavaScript函數document.getElementById()

什麼它所做的是選擇具有給定id屬性的單個元素。 Jquery返回它封裝在自定義對象中。從devx blog

選擇器返回被稱爲「纏集」,這是 包含所有被選擇的DOM元素的數組狀結構的jQuery對象。 您可以像遍歷數組一樣遍歷包裝集或通過索引器(例如$(sel)[0])訪問各個元素。更重要的是,您還可以針對所有選中的元素應用jQuery函數。

1

至於我的理解,myForm會是一個<form>一個ID,它應該是一個唯一的ID。 那麼爲什麼這段代碼使用得到(0)看起來選擇器返回一個數組。

即與此相同:

$('#myForm')[0].submit(); 

需要注意的一點是,jQuery選擇給你一個jQuery對象,只有jQuery方法可以在它被應用。

但在你的情況下,似乎你想觸發本地DOM submit事件,並且只能應用於不在jQuery對象上的dom節點。所以,.get(0)返回一個DOM節點,並且.submit()事件已經觸發。雖然可以在JavaScript中簡化爲:

document.querySelector('#myForm').submit(); 

document.getElementById('myForm').submit(); 

如果你到.get()文檔:

描述:元素檢索一個由jQuery對象匹配。 .get()方法授予對每個jQuery對象下的DOM節點的訪問權限。如果索引的值超出範圍 - 小於元素的負數或等於或大於元素的數量 - 則返回undefined。

1

這是jquery選擇器返回一個數組。如果DOM是正確的,這意味着ID對每個元素唯一的,那麼你肯定可以使用

$('#form_id').submit() 

,而不是

$('#form_id').get(0).submit() 

然而,$( '#form_id')返回,而$的jQuery對象('#form_id')。get(0)返回一個DOM元素。 jquery對象可以使用jquery函數。

$('#id')//jquery object array 
    $('#id')[0]//first element of this array 
    $('#id').get(0)//first element of this array, DOM element 
    $('#id').eq(0)//first element of this array, jquery object