繁体   English   中英

调用变量jQuery函数

[英]call variable jQuery function

我已经看过如何使用window[]()来调用变量javascript function

是否可以调用变量jQuery function 如果是这样,怎么样?

通常,我只需要三元素来翻转可见的开关,将许多行代码刷成1是非常方便的。例如,在$.aja()内部success

if(msg.length > 0){
    $("#gridViewContainer").slideDown()
}
else{
    $("#gridViewContainer").slideUp()
}

这可能是一个不好的例子,因为boolean可能会传递给slide()或其他东西,但我想在上面的链接问题中使用这个概念。

这不适合我:

$("#gridViewContainer")[((msg.length > 0)?'slideDown':'slideUp')]()

jQuery函数仍然只是JavaScript函数,因此相同的规则适用于任何其他JS函数。

您可以调用对象objectVar方法,如下所示:

objVar.method();
objVar["method"]();
var methodName = "method";
objVar[methodName]();

你的问题提到了使用window[]() - 它适用于全局函数,因为它们本质上是window属性(当然,如果在浏览器中运行JS)。

在jQuery的情况下,您可以这样做:

var methodName = "hide";
$(someSelector)[methodName]();
$(someSelector)[anyJSExpressionThatReturnsAStringThatIsAjQueryMethod]();

编辑:我刚看到问题的新版本。 使用?:运算符选择方法名称显示的代码行应该与if/else具有相同的效果。 我自己也使用过相似的代码而没有任何问题,它在Jason P提供的小提琴中运行良好。 请注意,由于您的动机似乎是关于缩短代码,您可以省略[]表达式的所有括号,并执行以下操作:

$("#gridViewContainer")[msg.length > 0?'slideDown':'slideUp']();

......或者甚至省略> 0部分,因为当非零时, msg.length将是真实的:

$("#gridViewContainer")[msg.length ?'slideDown':'slideUp']();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM