将 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 对象。
所以有几个问题:
- 我在 jQuery 理解上的差距在哪里,以至于我试图将
find()
链接到 val()
- 我将如何完成我的要求:我想清除所有输入并切换 class
.required
. 所需的输入
谢谢!
问题不在于链接,而是您重复使用 find()
。
第一个 find()
检索所有 :input
元素并清除它们的值,这很好。然而,第二个 find()
然后在 内部 中搜索所有 input
元素以寻找 .required
。这无效,因为 input
不能有子元素(select
除外,但在这种情况下不适用)。
您需要在 当前 集合中搜索 class 或 required
的元素。为此,请改用 filter()
:
$('#some-selector')
.find(':input').val('')
.filter('.required').prop('required', someBoolean);
有没有办法在 val()
之后链接 find()
?
例如,给定以下代码,我想清除所有输入的值,但只切换具有 class 的输入的 required
属性 .required
:
$('#some-selector')
.find(':input')
.val('')
.find('.required')
.prop('required', someBoolean);
从jQuery docs可以看出,val()
return是一个字符串、数字或数组。在我看来 find()
不会作用于这个 return 值,因为我认为它需要一个 jQuery 对象。
所以有几个问题:
- 我在 jQuery 理解上的差距在哪里,以至于我试图将
find()
链接到val()
- 我将如何完成我的要求:我想清除所有输入并切换 class
.required
. 所需的输入
谢谢!
问题不在于链接,而是您重复使用 find()
。
第一个 find()
检索所有 :input
元素并清除它们的值,这很好。然而,第二个 find()
然后在 内部 中搜索所有 input
元素以寻找 .required
。这无效,因为 input
不能有子元素(select
除外,但在这种情况下不适用)。
您需要在 当前 集合中搜索 class 或 required
的元素。为此,请改用 filter()
:
$('#some-selector')
.find(':input').val('')
.filter('.required').prop('required', someBoolean);