0

这是一个非常非常非常简化的示例。

我正在尝试将函数名称“显示”或“隐藏”作为参数传递。

但它不会工作,你能帮忙吗?

if(a==true){
showOrhide (hide);
}else{
showOrhide (show);
}

var showOrhide = function(doThis){
  $("#myDiv").doThis();
};
4

3 回答 3

3

它会像这样工作:

var showOrhide = function(doThis) {
    $("#myDiv")[doThis]();
};

if(a) {
    showOrhide('hide');
} else {
    showOrhide('show');
}

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

$("#myDiv").toggle(!a);
于 2013-08-16T12:41:37.297 回答
0

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

if(a==true){
  showOrhide ('hide');
}else{
  showOrhide ('show');
}

function showOrhide (doThis){
  $("#myDiv")[doThis]();
};
于 2013-08-16T12:41:55.737 回答
-2

免责声明:Eval 是邪恶的(引用评论)。请自担风险使用它。以下答案仅用于知识目的。:-)

另一种方式,使用 eval。

var showOrhide = function(doThis){
  eval("$('#myDiv')." + doThis + "()");
};    

if(false==true){
  showOrhide ('hide');
}else{
  showOrhide ('show');
}
于 2013-08-16T12:46:17.993 回答