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

use*_*771 5 javascript syntax jquery

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

$("#theAppContainer")[s > u ? "addClass" : "removeClass"]("something");
Run Code Online (Sandbox Code Playgroud)

我理解第一部分是选择名为theAppContainer的元素,如果s> u,第二部分评估为"addClass",但我无法弄清楚这行代码总体上做了什么.

Ry-*_*Ry- 13

括号语法按名称获取属性的值,括号调用作为该属性值的函数.它相当于:

var container = $('#theAppContainer');

if(s > u) {
    container.addClass('something');
} else {
    container.removeClass('something');
}
Run Code Online (Sandbox Code Playgroud)

此外,请永远不要写那样的代码.=)

另外,还可以使用toggleClass第二个switch参数:

$('#theAppContainer').toggleClass('something', s > u);
Run Code Online (Sandbox Code Playgroud)


Ste*_*ler 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");
}
Run Code Online (Sandbox Code Playgroud)