[英]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.