调用变量 jQuery 函数

call variable jQuery function

本文关键字:函数 jQuery 变量 调用      更新时间:2023-09-26

我已经展示了如何使用window[]()调用变量javascript function s。

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

通常,我只需要一个三元来翻转一个可见的开关,将许多行代码合并为 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']();