将 find() 链接到 val()

Chaining find() to val()

有没有办法在 val() 之后链接 find()

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

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

jQuery docs可以看出,val() return是一个字符串、数字或数组。在我看来 find() 不会作用于这个 return 值,因为我认为它需要一个 jQuery 对象。

所以有几个问题:

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

谢谢!

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

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

您需要在 当前 集合中搜索 class 或 required 的元素。为此,请改用 filter()

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