我在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);
});
请告诉我,我做错了什么?
答案 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);
});
答案 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(){
...
}));
)