javascript将函数名作为参数传递,不适用于jquery显示隐藏

javascript pass function name as parameter not working with jquery show hide

本文关键字:适用于 不适用 jquery 显示 隐藏 参数传递 函数 javascript      更新时间:2023-09-26

这里有一个非常非常简单的例子。

我试图传递一个函数名"show"或"hide"作为参数。

但它不起作用,你能帮忙吗?

if(a==true){
showOrhide (hide);
}else{
showOrhide (show);
}
var showOrhide = function(doThis){
  $("#myDiv").doThis();
};

它的工作方式如下:

var showOrhide = function(doThis) {
    $("#myDiv")[doThis]();
};
if(a) {
    showOrhide('hide');
} else {
    showOrhide('show');
}

Hoever,它仍然非常丑陋。jQuery有一个toggle()方法,它接受一个更合适的布尔参数:

$("#myDiv").toggle(!a);

如果只想传递showhide函数,可以只传递它们的名称并以这种方式调用它们:

if(a==true){
  showOrhide ('hide');
}else{
  showOrhide ('show');
}
function showOrhide (doThis){
  $("#myDiv")[doThis]();
};

免责声明:Eval是邪恶的(引用评论)。请自行承担使用风险。以下答案仅供参考。:-)

另一种方式,使用eval。

var showOrhide = function(doThis){
  eval("$('#myDiv')." + doThis + "()");
};    
if(false==true){
  showOrhide ('hide');
}else{
  showOrhide ('show');
}