javascript - 动态调用 javascript 函数

标签 javascript jquery arrays

我在像这样的数组中定义了一些函数。

checkInputType : function(sel){
 alert($(sel).prop('type'));
},
checkSelect : function(el){
 .......
},
.....

我可以这样调用它options.checkInput($(this));。这是有效的。
现在我想动态调用任何已定义的函数。所以我有这个数组,其中包含函数名称。

var elmType2Func = {'input' : 'checkInput', 'select' : 'checkSelect', 'textarea' : 'checkTextarea'};

现在循环遍历表单内的所有元素,我想为每个元素调用正确的函数(elmType2Func数组,以元素作为键函数名称为一个值)。

var element = $(this).prop('tagName').toLowerCase();

我不能这样调用 - options.elmType2Func[element]($(this)); 我知道这不是调用该函数的正确方法。
任何人都可以帮我解决这个问题吗?

最佳答案

您需要存储函数,而不是它们的名称:

var elmType2Func = {'input' : checkInput, 'select' : checkSelect, 'textarea' : checkTextarea};

http://jsfiddle.net/hmb25/

如果函数已经是某个对象的成员,例如:

var options = {
     checkInput: function() {...},
     checkSelect: function() {...},
}

然后你可以将字符串保存在 elmType2Func 中:

var elmType2Func = {'input' : 'checkInput', 'select' : 'checkSelect', 'textarea' : 'checkTextarea'};

并使用双重间接引用它们:

var tag = $(this).prop('tagName').toLowerCase();
var fun = options[elmType2Func[tag]];

为您提供该函数的引用。

关于javascript - 动态调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475714/

相关文章:

javascript - 如何在 jquery 文本框的更改事件中将下拉列表选定项的值替换为某个值?

javascript - 使用不适用于移动设备的 jquery 方法检测 div 的结尾

javascript - jQuery:无法切换显示/隐藏 div 内容

javascript - 将数据插入 Mongoose 模型数组?

c++ - C++ 中的字符串数组无法正常工作?

arrays - 快速数组存储数据

javascript - 在 Chrome 中查找 "normal"行高的像素值

javascript - 如何检查 2 个 jQuery 选择器是否指向相同的元素?

JavaScript 四舍五入,不带小数

php - 从jquery文件在php中分配全局变量的值