jquery选择器后的括号和括号是什么意思?

时间:2013-05-21 02:02:00

标签: javascript jquery syntax

我遇到了这行代码,我无法弄清楚这意味着什么:

$("#theAppContainer")[s > u ? "addClass" : "removeClass"]("something");

我理解第一部分是选择名为theAppContainer的元素,第二部分评估为“addClass”,如果s>你,但我无法弄清楚这行代码的整体做法。

3 个答案:

答案 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中,您将看到所有好处。