【问题标题】:Why '$("#form")[0].reset();' works and '$("#form").reset();' not?为什么'$("#form")[0].reset();'工作和 '$("#form").reset();'不是?
【发布时间】:2016-11-05 22:45:01
【问题描述】:

我在我的网页中使用如下表单重置方法

$("#form")[0].reset();

但是当我像下面这样使用它时

$("#form").reset();

这给了我错误。

为什么第一种方法有效而后一种方法无效?

我的页面运行良好。但我想知道它背后的原因。解决方案无处不在。但他们都没有描述背后的原因。

注意:我检查了here,它显示了很多答案。没有什么能明确说明原因。

【问题讨论】:

  • 因为 reset 不是 jQuery API 的一部分,而是原生 API,您使用 [0] 访问原生元素。
  • $("#form")[0] 是您的元素在表单的 DOM 对象中的索引位置

标签: jquery forms reset


【解决方案1】:

jQuery 选择器方法可以返回多个元素,因此为了保持一致性,其行为是返回一个数组。这个数组是其他 jQuery 方法的包装器,可以操作该选择,但操作经典 DOM 函数需要处理特定元素。

你可以像以前那样做,[0] 拉出第一个,或者你可以遍历它们:

$('#form').each(function() { this.reset() });

【讨论】:

    【解决方案2】:

    因为reset()方法是HTML表单元素的成员:

    https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/reset

    而不是 jQuery 对象提供的方法,它是 0 个或多个匹配您的选择器的元素的集合 (#form)

    【讨论】:

      【解决方案3】:

      我认为简单的原因是它是为了使用 Jquery 强制工作 javascript 函数

      .reset() 不是 Jquery 原生函数。这是一个Javascript 函数,我们在Jquery 中强制使用它

      【讨论】:

        猜你喜欢
        • 2022-12-27
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 2017-02-10
        • 2019-12-15
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        相关资源
        最近更新 更多