3 javascript jquery dynamic-function
我已经看过如何function通过使用调用变量javascript window[]().
是否可以调用变量jQuery function?如果是这样,怎么样?
通常,我只需要三元素来翻转可见开关,将许多代码行刷成1就很方便.例如,在一个内部$.aja() success:
if(msg.length > 0){
$("#gridViewContainer").slideDown()
}
else{
$("#gridViewContainer").slideUp()
}
Run Code Online (Sandbox Code Playgroud)
这可能是一个糟糕的例子,因为boolean可能会传递给slide()某个东西,但是我想在上面的链接问题中使用这个概念.
这不适合我:
$("#gridViewContainer")[((msg.length > 0)?'slideDown':'slideUp')]()
Run Code Online (Sandbox Code Playgroud)
jQuery函数仍然只是JavaScript函数,因此相同的规则适用于任何其他JS函数.
您可以objectVar按如下方式调用对象的方法:
objVar.method();
objVar["method"]();
var methodName = "method";
objVar[methodName]();
Run Code Online (Sandbox Code Playgroud)
您提到的问题window[]()- 适用于全局函数,因为它们本质上是属性window(如果在浏览器中运行JS,当然).
在jQuery的情况下,您可以这样做:
var methodName = "hide";
$(someSelector)[methodName]();
$(someSelector)[anyJSExpressionThatReturnsAStringThatIsAjQueryMethod]();
Run Code Online (Sandbox Code Playgroud)
编辑:我刚看到问题的新版本.?:操作员选择方法名称时显示的代码行应该具有与之相同的效果if/else.我自己也使用过相似的代码而没有任何问题,它在Jason P提供的小提琴中运行良好.请注意,由于您的动机似乎是关于缩短代码,您可以省略表达式中的所有括号,[]并执行此操作:
$("#gridViewContainer")[msg.length > 0?'slideDown':'slideUp']();
Run Code Online (Sandbox Code Playgroud)
...或者甚至省略该> 0部分,因为msg.length当非零时将是真实的:
$("#gridViewContainer")[msg.length ?'slideDown':'slideUp']();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3429 次 |
| 最近记录: |