一个字符串调用的jQuery方法?

时间:2014-03-03 15:09:45

标签: jquery

我在导航栏上看到了这段代码,第一次看到这种类型

var logoSH = fixIT ? 'show' : 'hide';
$('#mini-logo')

忽略

  

fixIT

它包含truefalse

.之后没有$('#mini-logo'),我第一次看到hide()show()方法通过隐藏方式调用。

它是如何运作的?

2 个答案:

答案 0 :(得分:2)

在Javascript中,这些是等价的:

myObj.SomeProperty

myObj["SomeProperty"]

所以这个:

$("someSelector").hide();

相当于:

$("someSelector")["hide"]();

您发布的代码相当于:

if (fixIT) {
     $('#mini-logo').show(300);
}
else {
     $('#mini-logo').hide(300);
}

但它更紧凑,(恕我直言)可读性更低。虽然,公平地说,它确实确保传递给.show.hide(例如300)的论点始终是相同的,这可能对您很重要。此外,如果您有多个参数要传递(并且它们在两种情况下都相同),那么它也可能更有用。

答案 1 :(得分:2)

JavaScript有两个member operatorsdot notationsquare bracket notation。这两个都用于访问对象的成员。

当您拥有要访问的固定属性键时,将使用点表示法,其中当您有一个键是键时使用方括号表示法

当您说$('#mini-logo')[logoSH](300)时,假设logoSH == 'show'它等同于$('#mini-logo').show(300)