2016-02-12 36 views
1

我對JQuery的下列函數來顯示我的提示,但 當我嘗試顯示工具提示沒有之前添加超時做出一些延遲作品(((jQuery的setTimout遺址都FUNC

$('.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); 
}); 

請告訴我,我做錯了什麼

+1

'的setTimeout(函數{'應該'的setTimeout(函數(){'一開始 – Andy

回答

5

裏面setTimeout()thisWindow而不是向$('.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

+0

謝謝這對我幫助很大! –

0

或者只是代理這一點:

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

;)

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); 
});