使用jquery在mouseleave上绑定settimeout

时间:2011-05-20 10:31:07

标签: javascript jquery settimeout

我正在使用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()函数不会被调用。

有人可以解释我在这里做错了吗?

2 个答案:

答案 0 :(得分:2)

尝试将函数而不是字符串传递给setTimeout:

$("#"+this.id+i).bind('mouseleave', function() {
   setTimeout(function() { 
      generate(el); 
   }, 500)
});

答案 1 :(得分:0)

好吧,我自己整理了一下,我真正需要的是一个闭包,它返回一个带有'setTimeout(generate(ObjPassedToClosure))'的函数