jQuery confusion: why does $("input").eq(0)(":checked") give "jQuery(…) is not a function"?

huangapple go评论101阅读模式
英文:

jQuery confusion: why does $("input").eq(0)(":checked") give "jQuery(...) is not a function"?

问题

我对这个行为感到困惑。根据我的理解,$("input") 返回 DOM 中所有输入元素的 jQuery 对象,因此 $("input").eq(0) 将返回 DOM 中第一个输入元素的 jQuery 对象。而 ":checked" 选择器会从 jQuery 对象中选择所有已选中的元素。

所以我期望 $("input").eq(0)(":checked") 如果第一个输入元素未被选中,将返回长度为 0 的 jQuery 对象,如果被选中,则返回长度为 1 的包含该元素的 jQuery 对象。我的思维有什么问题吗?我明白这很基础,但我弄不明白。jQuery 是一个对象,但通常我可以像调用函数一样调用它,并传递一个选择器的字符串。但在这里,我调用一个返回 jQuery 对象的函数,但不能使用字符串选择器调用它。请给我一些启发!

英文:

I am puzzled by this behavior. As I understand the docs, $("input") returns a jQuery object for all of the input elements in the DOM, and so $("input").eq(0) would return a jQuery object for the first input element in the DOM. And the ":checked" selector selects from the jQuery object all elements that are checked.

So I expected that $("input").eq(0)(":checked") would return a jQuery object of length 0 if the first input element was not checked, or a jQuery object of length 1 for the element itself if it was checked. What's wrong with my thinking? I realize this is really fundamental, but I can't figure it out. jQuery is an object, but I can normally call it like a function and pass it a string for a selector. But here I call a function that returns a jQuery object, but I can't call it with a string selector. Please enlighten me!

答案1

得分: 3

$("input").eq(0) 返回一个 jQuery 对象,但您正在尝试将其作为一个带有 (":checked") 参数的函数来调用。这是无效的,就像 ({a: 1})() 一样(尝试像调用函数一样调用对象)。jQuery 本身是一个可以调用的函数,但它的返回值不是。

使用 $('input').eq(0).is(':checked') 来检查元素是否匹配选择器。

或者使用 .filter(':checked') 来获取所有与选择器匹配的元素。

英文:

$("input").eq(0) returns a jQuery object, but you are trying to call it as a function with (":checked"). This is invalid, just like ({a: 1})() (attempting to call an object like a function). jQuery itself is a function that you can call, but its return value is not.

Use $('input').eq(0).is(':checked') to check if the element matches the selector.

Or use .filter(':checked') to get all the elements that match the selector.

huangapple
  • 本文由 发表于 2023年8月5日 01:48:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/76838152.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定