链接find()到val()

时间:2018-01-19 16:47:30

标签: javascript jquery jquery-chaining

有没有办法在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所需的所有输入和切换。
  3. 谢谢!

1 个答案:

答案 0 :(得分:7)

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

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

您需要在当前集合中搜索类required的元素。为此,请使用filter()代替:

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