Jquery setTimout破坏了所有的功能

时间:2016-02-12 13:12:54

标签: javascript jquery

我在JQuery上有以下函数来显示我的工具提示,但是 当我尝试添加超时以在显示工具提示之前做出一些延迟时无效((

$('.help').mouseover(function(){
  setTimeout(function{ //this is timeout if i delete this - evrthng goes well
    $(this).find('div').stop().fadeIn(900);
    var top = $(this).position().top;
    var left = $(this).position().left;
    var height = $(this).find(".tip").height();
    $(this).find(".tip").css('top', top-height);
    $(this).find(".tip").css('left', left)
  }, 1000);
});

请告诉我,我做错了什么?

3 个答案:

答案 0 :(得分:5)

setTimeout()内,this引用Window而不是$('.help')。试试这个:

$('.help').mouseover(function(){
    var that = this;
    setTimeout(function() {
        $(that).find('div').stop().fadeIn(900);
        var top = $(that).position().top;
        var left = $(that).position().left;
        var height = $(that).find(".tip").height();
        $(that).find(".tip").css('top', top-height);
        $(that).find(".tip").css('left', left)
    }, 1000);
});

考虑setTimeout() is a method of Window

答案 1 :(得分:1)

我认为您忘记了函数之后的()并且在最后一行丢失了分号。试试这个:

$('.help').mouseover(function(){
   setTimeout(function(){ //this is timeout if i delete this - evrything goes well
      $(this).find('div').stop().fadeIn(900);
      var top = $(this).position().top;
      var left = $(this).position().left;
      var height = $(this).find(".tip").height();
      $(this).find(".tip").css('top', top-height);
      $(this).find(".tip").css('left', left);
   }, 1000);
});

答案 2 :(得分:0)

或只是代理这个:

setTimeout($.proxy(function(){
  ...
}));