javascript将函数名作为参数传递,不使用jquery show hide
这是一个非常简单的例子 我试图将函数名“show”或“hide”作为参数传递 但是它不起作用,你能帮忙吗javascript将函数名作为参数传递,不使用jquery show hide,javascript,jquery,Javascript,Jquery,这是一个非常简单的例子 我试图将函数名“show”或“hide”作为参数传递 但是它不起作用,你能帮忙吗 if(a==true){ showOrhide (hide); }else{ showOrhide (show); } var showOrhide = function(doThis){ $("#myDiv").doThis(); }; 它的工作原理如下: var showOrhide = function(doThis) { $("#myDiv")[doThis]();
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);
如果您只想传递
show
和hide
函数,您可以只传递它们的名称,并以这种方式调用它们:
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');
}
@Neal的可能重复项为什么你这么认为?这应该是可行的,因为提升:@codename-Highting确保变量已声明,但它不会提升定义(在原始答案中有
var showOrhide=…
),感谢解决方案-它与切换无关,但与概念有关。非常感谢您的帮助我知道最好的方法是使用toggle()
然后使用$(“#myDiv”)[doThis]()代码>。这就是为什么我用Or开始回答。我刚刚发布了另一种方法来达到要求。和@Juhana:Thank:-)“谢谢,我从来都没有新过这个-酷,我学到了一些东西”-这就是为什么,@Jithin,最好不要在没有大量使用免责声明的情况下谈论eval,因为实际的用例太远了,在这两者之间,OP很有可能在其他地方使用它来攻击自己的脚。