这行 JQuery 代码的含义是什么?

5

我在这个网站上看到了一个jFiddle的帖子,展示了一个JQuery的下拉菜单,有一段语法我无法理解。

jFiddle链接: http://jsbin.com/oxajeq/3/edit?html,css,js,console,output

我不理解的代码行:

$('#mini-logo')[logoSH](300);

我知道第一部分选择了id为mini-logo的元素,但我不知道后面的语法是什么意思!在代码中,[logoSH]可以变成show或hide,而括号中的内容表示持续时间。然而,我找不到任何使用这种语法的例子。我还搜索了CSS3、JQuery、转换、效果、动画等任何可能相关的内容,但都没有找到类似于这段代码的东西。我知道[]中的任何内容都不是方法,但我无法弄清楚它们是什么。非常感谢您的帮助。

4
请注意,这并不是jQuery的特殊之处,它只是标准的JavaScript对象属性访问。它与CSS无关。 - nnnnnn
我仍在努力理解JS的工作方式,所以根据你所说的,它是一个具有属性的JS对象,还是一个JS / jQuery函数? - Tanner Summers
$('#mini-logo') 调用 $ 函数,该函数返回一个对象。所返回的对象具有您可以使用的属性和方法。 - nnnnnn
1个回答

11

这个结构是基于方括号表示法来访问属性。它允许在此处动态选择要应用的方法(showhide)。

logoSH"show""hide"

这意味着您的代码行要么是

$('#mini-logo')["show"](300);,要么是$('#mini-logo')["hide"](300);

您也可以这样阅读:

$('#mini-logo').show(300);$('#mini-logo').hide(300);

这是一个常见的结构,您也可以使用三元运算符来实现:

$('#mini-logo')[someBool ? "show" : "hide"](300);

注意:如果没有时间限制,您可以使用接受布尔值参数的toggle函数。


好的,那很有道理,所以我猜.show()和.hide()是JQuery函数? - Tanner Summers
@TannerSummers 是的。在答案中添加了链接。 - Denys Séguret
似乎我需要回去复习JS中的对象、属性和函数。我太习惯于Java和C++了,这让我感到困惑。如果我没记错的话,JS对象可以包含具有值或函数的属性。从我正在阅读JS的网站上看到,它提到通过object.function或object['function']访问对象的函数。但我从未见过(JS) itemfunction或(JQuery) $('item')function的格式。Denys,非常感谢您的帮助,谢谢 :) - Tanner Summers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接