2012-03-04 54 views
0

根據定義,在一個給定ID的頁面上只能有一個控件。爲什麼這個Ajax ID選擇器返回一個數組?

這條語句設置一個控件的值:

document.getElementById("ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation").value = "1"; 

爲什麼 「[0]」 有必要嗎?

$("#ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation")[0].value = "1"; 
+2

請注意一些HTML?可以通過2個元素具有相同的ID – dotoree 2012-03-04 19:25:40

+0

即使只返回單個結果,jQuery也會返回* array-like *對象。我認爲你的例子缺少一個'#'作爲元素ID;例如'$( 「#ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation」)'。 – 2012-03-04 19:25:51

回答

1

當你這樣做:它具有可value財產

$("ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation")[0] 

或者

$("ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation").get(0) 

您正在訪問實際的DOM元素。

,如果你使用jQuery的val()方法,而不是它是沒有必要的:當你想沒有其他訪問元素的本地方法/屬性

$("#ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation").val('1') 

所以[index]一部分是必要的。

1

爲了一致性。儘管id名義上與單個元素相對應,但其他jQuery選擇器可能會返回多個結果。爲了保持冷靜和可預測性,所有的jQuery結果都集合在一起。

1

正確的代碼:

$("#ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation").val() = 1; 
1

documentation

jQuery對象包含文檔對象模型(DOM)已經從HTML字符串創建或選擇元素的集合從一個文件。由於jQuery方法通常使用CSS選擇器來匹配文檔中的元素,因此jQuery對象中的元素集通常稱爲一組「匹配元素」或「選定元素」。

jQuery對象本身的行爲很像一個數組;它有一個length屬性,對象中的元素可以通過它們的數字索引[0]到[length-1]進行訪問。請注意,一個jQuery對象實際上並不是一個Javascript數組對象,所以它沒有像真正的Array對象的所有方法,比如join()。

最相關的部分,你的問題是「設定在一個jQuery對象元素通常被稱爲一套‘匹配的元素’或‘選定的元素’。

0

我不不知道你從哪裏得到這些代碼,但根據我的經驗,「[0]」根本不需要。 這個代碼行讓我好奇的事情是你想用「.value = 1」做什麼。 jQuery中的「value」屬性由函數運行.val() - http://api.jquery.com/val/

相關問題