2

有没有办法连锁find()追随val()

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

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

jQuery 文档中,很明显val()返回一个字符串、数字或数组。在我看来,这find()不会在这个返回值上起作用,因为我相信它需要一个 jQuery 对象。

所以有几个问题:

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

谢谢!

4

1 回答 1

7

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

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

相反,您需要在当前集合中搜索具有required. 要做到这一点,请filter()改用:

$('#some-selector')
  .find(':input').val('')
  .filter('.required').prop('required', someBoolean);
于 2018-01-19T16:50:19.843 回答