我是javascript和jQuery的新手,我只是阅读了像$('#myForm').get(0).submit()
据我所知,myForm
是<form>
的ID,它应该是唯一的ID。那么为什么这段代码使用似乎选择器的get(0)
返回一个数组。是否会有多个具有相同ID myForm
的html元素?
答案 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对象也伪装成数组