我正在使用javascript创建一个幻灯片菜单,使用类和对象以及一些jquery作为我更深入学习javascript的努力的一部分。 一切顺利,直到我想将mouseleave绑定到菜单的启动器。 所以这是我的代码块
var el;
function generate(obj){
return function(){obj.slidein();}
}
function slider(arg1,arg2){
...//Some junk
el=this;
for(i=0;i<this.nsubs;i++){ ...
$("#"+this.id+i).bind('mouseleave',function(){setTimeout("generate(el)",500)});
}
...
}
好吧,我在firefox错误控制台上没有错误但是当鼠标离开有问题的元素时,我想要附加到mouseleave的slidein()函数不会被调用。
有人可以解释我在这里做错了吗?
答案 0 :(得分:2)
尝试将函数而不是字符串传递给setTimeout:
$("#"+this.id+i).bind('mouseleave', function() {
setTimeout(function() {
generate(el);
}, 500)
});
答案 1 :(得分:0)
好吧,我自己整理了一下,我真正需要的是一个闭包,它返回一个带有'setTimeout(generate(ObjPassedToClosure))'的函数