Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery:使用变量作为函数名_Jquery_Html - Fatal编程技术网

jQuery:使用变量作为函数名

jQuery:使用变量作为函数名,jquery,html,Jquery,Html,我试图创建一个函数,根据与我交互的元素的类调用其他函数 我希望能够使用元素的类来调用函数,而不是使用if语句。示例如下: function validate(thisInput){ var thisClass = thisInput.attr("class").split(' ')[0]; validate + class(thisInput); /*This is what I would like to happen: the class is grabbe

我试图创建一个函数,根据与我交互的元素的类调用其他函数

我希望能够使用元素的类来调用函数,而不是使用if语句。示例如下:

function validate(thisInput){
    var thisClass = thisInput.attr("class").split(' ')[0];
    validate + class(thisInput); 
    /*This is what I would like to happen:
    the class is grabbed from above, then that class name (whatever it is)
    calls it's own function.  I will be creating a function for each class.
    */
}

function validateClassname(thisInput) {
    //do something
}
如您所见,我试图找到类名,将其放入自己的函数中(不使用if语句驱动),然后让该函数执行它需要执行的任何操作

我看错了吗?我应该换一种方式吗? 多谢各位

我看错了吗

对。下面是一种更合理的对象方法(
foo
bar
是类名):

此外,您可能需要重新考虑使用类名来存储信息。如果有多个类,则不能保证您想要的是第一个类。改为查看。

您可以使用eval()函数来计算一个名称可变的函数:

var className = "OnName";
var classType = "OnType";

eval("validate" + className + "()")
// calls validateOnName()

eval("validate" + classType + "()")
// calls validateOnType()

var someInput = 234;
eval("validate" + classType + "(" + someInput + ")")
// calls validateOnType(234)

并不是说这是一个理想的解决方案-也许您应该考虑使用一个泛型函数或一组函数,而不是为多个类名使用多个函数。

为什么不将类名传递给泛型validateName函数?然后我必须创建if语句,让它在我可以确定类是什么之前确定类运行它自己的功能-我只是想切断中间的鬃毛(如果语句)谢谢!我会试试这个。有了这些输入,就有了严格的规则来概括验证类将成为第一个类,其中包含了.split()。谢谢,我一直在寻找一种方法来删掉中间人,使代码看起来更漂亮。Tieri也将对此进行研究。
var className = "OnName";
var classType = "OnType";

eval("validate" + className + "()")
// calls validateOnName()

eval("validate" + classType + "()")
// calls validateOnType()

var someInput = 234;
eval("validate" + classType + "(" + someInput + ")")
// calls validateOnType(234)