选择器$('#myform')会返回一个数组吗?

时间:2016-04-01 08:04:52

标签: javascript jquery

我是javascript和jQuery的新手,我只是阅读了像$('#myForm').get(0).submit()

这样的代码

据我所知,myForm<form>的ID,它应该是唯一的ID。那么为什么这段代码使用似乎选择器的get(0)返回一个数组。是否会有多个具有相同ID myForm的html元素?

5 个答案:

答案 0 :(得分:1)

jquery总是返回一个数组,但你可以像单个对象一样使用它。

e.g:

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

或任何其他jquery函数:

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

您还可以使用以下命令获取javascript元素:

$("#someID")[0];

答案 1 :(得分:1)

对于id选择器,jQuery使用JavaScript函数document.getElementById()

它的作用是选择具有给定id属性的单个元素。 Jquery将它包装在自定义对象中。来自devx blog

  

选择器返回一个称为“包装集”的jQuery对象,即   类似于数组的结构,包含所有选定的DOM元素。   您可以像数组或访问一样遍历包装集   通过索引器的单个元素(例如$(sel)[0])。更多   重要的是,您还可以对所有应用jQuery函数   选定的元素。

答案 2 :(得分:1)

  

就我的理解而言,myForm是<form>的id,它应该是唯一的id。 为什么这段代码使用get(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节点 的访问权限。如果index的值超出范围 - 小于元素的负数或等于或大于元素的数量 - 则返回undefined。

答案 3 :(得分:1)

它是jquery选择器返回一个数组。如果DOM是正确的,这意味着每个元素的id都是唯一的,那么你一定可以使用

   $('#form_id').submit()

而不是

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

然而,$(&#39;#form_id&#39;)返回一个jquery对象,而$(&#39;#form_id&#39;)。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

答案 4 :(得分:0)

正如您在文档中看到的那样:https://api.jquery.com/submit/您可以直接将exec函数提交给表单对象:

$('#myForm').submit();

此外,您可以在此处阅读https://api.jquery.com/get/

  

每个jQuery对象也伪装成数组