我遇到了这行代码,我无法弄清楚这意味着什么:
$("#theAppContainer")[s > u ? "addClass" : "removeClass"]("something");
我理解第一部分是选择名为theAppContainer的元素,第二部分评估为“addClass”,如果s>你,但我无法弄清楚这行代码的整体做法。
答案 0 :(得分:13)
The bracket syntax gets the value of a property by name,括号调用的函数是该属性的值。它相当于:
var container = $('#theAppContainer');
if(s > u) {
container.addClass('something');
} else {
container.removeClass('something');
}
另外,请永远不要写那样的代码。 =)
另外,toggleClass
还会使用第二个switch
参数:
$('#theAppContainer').toggleClass('something', s > u);
答案 1 :(得分:5)
$("#theAppContainer")
返回一个jquery对象。
jqueryObject["addClass"]
与jqueryObject.addClass
因此,jqueryObject["addClass"]
返回jquery对象上的addClass方法。
然后使用("something")
将参数传递给执行方法。
所以你基本上在做
var myJqueryObject = $("#theAppContainer");
if(s > u) {
myJqueryObject.addClass("something");
}
else {
myJqueryObject.removeClass("something");
}
答案 2 :(得分:1)
方括号表示法。
$('#element')['hide'](700)
点表示法:
$('#element').hide(700)
另一件事(?:)被称为ternary operator
使语句比较返回一个布尔值,
其中s>u
是一个语句,并根据结果使用值:
STATEMENT ? IF TRUE USE THIS : IF FALSE USE THAT ;
如果s > u
使用'addClass'
,则使用'removeClass'
这意味着如果$("#theAppContainer")["addClass"]("something");
和s > u
,您将获得$("#theAppContainer")["removeClass"]("something");
如果s===u || s<u
,请$("#theAppContainer").addClass("something");
可以用DOT表示法翻译:
$("#theAppContainer").removeClass("something");
或
toggleClass()
这不是最好的方法,因为在这种特殊情况下你可以使用{{1}}方法,但任何方式都很有用。
并且你不应该使用括号表示法。在高级JS中,您将看到所有好处。