【问题标题】:Chaining find() to val()将 find() 链接到 val()
【发布时间】:2018-06-28 23:22:11
【问题描述】:

有没有办法将find() 链接到val() 之后?

例如,给定以下代码,我想清除所有输入的值,但只切换具有.required 类的输入的required 属性:

$('#some-selector')
    .find(':input')
    .val('')
    .find('.required')
    .prop('required', someBoolean);

jQuery docs 可以看出val() 返回一个字符串、数字或数组。在我看来,find() 不会在这个返回值上起作用,因为我相信它需要一个 jQuery 对象。

所以有几个问题:

  1. 我在 jQuery 理解方面的差距在哪里,以至于我试图将 find() 链接到 val()
  2. 我将如何满足我的要求:我想清除所有输入并切换类 .required 所需的所有输入。

谢谢!

【问题讨论】:

  • 我认为无论如何你的逻辑是有缺陷的,输入不能有任何孩子,所以你不能对他们做.find

标签: javascript jquery jquery-chaining


【解决方案1】:

问题不在于链接,而在于您重复使用find()

第一个find() 检索所有:input 元素并清除它们的值,这很好。然而,第二个 find() 正在 inside 所有这些 input 元素中搜索 .required。这无效,因为input 不能有子元素(select 除外,但在这种情况下不适用)。

您需要在 current 集合中搜索类为 required 的元素。为此,请改用filter()

$('#some-selector')
  .find(':input').val('')
  .filter('.required').prop('required', someBoolean);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2022-10-01
    相关资源
    最近更新 更多