jQuery:使用变量作为函数名
我试图创建一个函数,根据与我交互的元素的类调用其他函数 我希望能够使用元素的类来调用函数,而不是使用if语句。示例如下: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
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)