我正在尝试使用jquery的悬停来清除set变量(timer)上的一个超时(cleartimeout),然后在鼠标离开元素时再设置另一个(settimeout)。关于如何做到这一点的任何想法?
到目前为止我的代码(不起作用!!!!)是:
$(function() {
$('ul.contact').hover(function() {
$(this).clearTimeout(timer).animate({ 'opacity' : 0.7});
}, function() {
$(this).setTimeout( function()
{
$('ul.contact').fadeOut('slow');
}, 8000);
});
timer = setTimeout(function() {
$('li#contact').removeClass('cur');
$('li#$url').addClass('cur');
}, 8625);
});
答案 0 :(得分:6)
setTimeout()和clearTimeout()是(全局)窗口对象的函数,因此应该在没有对象的情况下调用它们。在您的示例中,删除“$(this)”。在调用setTimeout和clearTimeout
之前答案 1 :(得分:4)
您也无法将.animate()
来电链接到您正在尝试的clearTimeout()
。
答案 2 :(得分:2)
hoverIntent jQuery插件可能有所帮助。它允许您调整鼠标悬停的灵敏度:
http://cherne.net/brian/resources/jquery.hoverIntent.html
......我怀疑你正在尝试做什么。
答案 3 :(得分:0)
我意识到我没有为我想要显示的实际元素设置另一个变量。现在已经设置了另一个变量,所有这些变量都适用于新代码:
非常感谢提示,但也包括在内!
$(function() {
$('ul.contact').hover(function() {
clearTimeout(display);
clearTimeout(timer);
$(this).css('display', 'block');
}, function() {
$(this).fadeOut('slow');
$('li#contact').removeClass('cur');
$('li#$url').addClass('cur');
});
});