这就是我想要的:当我将鼠标悬停在div之外时超时,如果我再次悬停在div之上则取消。
如果我删除了癌症,代码就可以了。所以显示和隐藏div工作正常。
这是我的代码:
$(document).ready(function ()
{
var timeoutID;
function clearAlert()
{
window.clearTimeout(timeoutID);
}
if ($('.txtVote').text() == "Avgi stemme")
{
$('#starInfo').hover(
function ()
{
clearAlert();
$('#CarDetailsButtons').css('right', '10px');
$('#voteStars').show();
},
function ()
{
console.log("hide iniated");
timeoutID = window.setTimeout(hideStars, 2000);
console.log("hide executed");
});
}
function hideStars()
{
console.log("hideStars ran");
$('#CarDetailsButtons').css('right', '45px');
$('#voteStars').hide();
}
});
而且,这是我的错误:
未捕获的SyntaxError:意外的标记ILLEGAL
出现在window.clearTimeout(timeoutID);
任何人都能看到我做错了什么? :)
编辑: * 工作 *
所以,似乎我有一些复制粘贴错误。我手动编写了clearAlert函数,就像以前一样,它现在可以工作了。
感谢您的所有输入!
答案 0 :(得分:2)
试试这个:
var that = this;
that.timeoutID = null;
...
that.timeoutID = ...
OR
你必须声明var timeoutID = null;全球。所以你在一个gloabl上下文中有var,而不是在$(document).ready的函数上下文中。
最好的解决方案是写一个带有计时器的小js-class。这样你就没有全局冲突了。
问候!
答案 1 :(得分:0)
我建议你将你的功能移到doc之外就像这样:
function hideStars()
{
console.log("hideStars ran");
$('#CarDetailsButtons').css('right', '45px');
$('#voteStars').hide();
}
function clearAlert()
{
window.clearTimeout(timeoutID);
}
$(document).ready(function ()
{
var timeoutID;
if ($('.txtVote').text() == "Avgi stemme")
{
$('#starInfo').hover(
function ()
{
clearAlert();
$('#CarDetailsButtons').css('right', '10px');
$('#voteStars').show();
},
function ()
{
console.log("hide iniated");
timeoutID = window.setTimeout(hideStars, 2000);
console.log("hide executed");
});
}
});