[英]Jquery check if var is a function and then call it
我有一个变量名称,我将其传递给插件,但该变量实际上是一个函数。 我使用jquery $ .isFunction来检查它是否是一个函数,如果是,它应该执行该函数。
但我似乎无法使它工作,我在jsfiddle中提供了一些例子: http : //jsfiddle.net/tZ6U9/8/
但这是一个示例代码:
HTML
<a class="one" href="#">click</a><br />
<a class="two" href="#">click</a><br />
<a class="three" href="#">click</a><br />
JS
$(document).ready(function() {
help = function(var1) {
alert(var1);
}
function help2(var1) {
alert(var1);
}
$('a.one').click(function() {
var functionName = "help";
if ($.isFunction([functionName])) {[functionName]("hello");
} else {
alert("not a function");
}
return false;
});
$('a.two').click(function() {
var functionName = "help";
if ($.isFunction(functionName)) {
functionName("hello");
} else {
alert("not a function");
}
return false;
});
$('a.three').click(function() {
var functionName = "help2";
if ($.isFunction(functionName)) {
functionName("hello");
} else {
alert("not a function");
}
return false;
});
$('a.four').click(function() {
var functionName = "help2";
if ($.isFunction([functionName])) {[functionName]("hello");
} else {
alert("not a function");
}
return false;
});
});
正如你所看到的,我厌倦了很多东西,但所有错误的东西可能......我从它们中激发了一些: jQuery - 使用变量作为函数名
总的来说,我传递一个与函数同名的变量,使用jquery检查它是否是一个函数,如果是,它应该执行该函数。
在此先感谢您的帮助。
如果您想通过其名称字符串调用函数,只需使用window
。
var functionName = "help";
if ($.isFunction(window[functionName])) {
window[functionName]("hello");
} else {
alert("not a function");
}
检查小提琴的工作示例。
示例只有一个链接正常工作。 使其他链接类似。
编辑:第一次评论后
HTML
<a class="one" href="#">click</a><br />
JS
var help = function(var1) {
alert(var1);
}
$(document).ready(function() {
$('a.one').click(function() {
var functionName = help;
if ($.isFunction(functionName)) {
functionName('test');
} else {
alert("not a function");
}
return false;
});
});
您可以使用以下命令调用窗口/全局范围中定义的函数,例如函数help
:
if ($.isFunction(window[functionName])) {
window[functionName]("hello");
}
另一方面, help2
无法通过这种方式访问,因为您在闭包中定义它。 可能的解决方案是在.ready()
处理程序之外定义函数。 然后,您可以使用window[functionName]
来调用它:
var namespace = {
help: function (var1) {
alert(var1);
},
help2: function (var1) {
alert(var1);
}
}
$(document).ready(function() {
var functionName = "help";
if ($.isFunction(namespace[functionName])) {
namespace[functionName]("hello");
}
});
演示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.