为什么这个Ajax ID选择器返回一个数组?

时间:2012-03-04 19:24:04

标签: jquery

根据定义,在具有给定ID的页面上只能有一个控件。

此语句设置单个控件的值:

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

为什么需要“[0]”?

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

5 个答案:

答案 0 :(得分:1)

为了保持一致性。即使id名义上对应于单个元素,其他jQuery选择器也可能返回多个结果。为了保持冷静和可预测性,所有jQuery结果最终都在集合中。

答案 1 :(得分:1)

执行此操作时:

$("ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation")[0]

或者

$("ctl00_phPageContent_dtmVisitChinaFrom_txtSkipValidation").get(0)

您正在访问具有value属性的实际DOM元素。

如果您使用jQuery的val()方法,则没有必要:

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

因此,当您想要访问元素的本机方法/属性时,[index]部分是必需的。

答案 2 :(得分:1)

正确的代码是:

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

答案 3 :(得分:1)

来自documentation

  

jQuery对象包含一组文档对象模型(DOM)元素,这些元素是从HTML字符串创建的或从文档中选择的。由于jQuery方法通常使用CSS选择器来匹配文档中的元素,因此jQuery对象中的元素集通常称为“匹配元素”或“选定元素”。

     

jQuery对象本身就像一个数组;它有一个length属性,对象中的元素可以通过它们的数字索引[0]到[length-1]来访问。请注意,jQuery对象实际上不是Javascript Array对象,因此它没有真正的Array对象的所有方法,例如join()。

与您的问题最相关的部分是“ jQuery对象中的元素集通常被称为一组的”匹配元素“或”所选元素“。

答案 4 :(得分:0)

我不知道你从哪里得到这些代码,但根据我的经验" [0]"实际上根本不需要。 在这个代码行中让我好奇的东西是你想要用" .value = 1"做什么。 "值" jQuery中的属性由函数.val() - http://api.jquery.com/val/

操作