2013-08-22 67 views
-1

嗨我想在这个悬停上实现一个函数setTimout。 http://jsfiddle.net/u3pW8/33/setTimeout on Hover功能

$(function() { 
    $("#moving .wrapper").mousemove(function (e) { 
     var parentOffset = $(this).parent().offset(); 
     var relX = e.pageX - parentOffset.left; 
     $(this).children(".hidden-content").css("left", relX); 
    }); 

    $("#static .wrapper").hover(function (e) { 
     var parentOffset = $(this).parent().offset(); 
     var relX = e.pageX - parentOffset.left; 
     $(this).children(".hidden-content").css("left", relX); 
    }); 
}); 

我觉得我有一个带参数的问题,原因coordonates被重新评估每一个鼠标移动

+2

你到底想干什么?由于这是一个事件处理程序,它会根据上次悬停事件显示隐藏部分,其中e.pageX每次都可能不同。 –

+0

你在问什么?你的小提琴只有一个功能,你想要什么超时时间? –

+0

你的目标是什么?你想得到什么结果?请改善您的问题,因为目前尚不清楚。 –

回答

0

悬停工作在两阶段

$("#static .wrapper").hover(function (e) { 
    // first stage it is wok on mouseover 
}, function (e) { 
    // second stage it is wok on mouseout 
}); 

现在还能用自己setimeout在这根据您的要求 参考HOVER

0

您需要设置超时onmouseenter并把代码,实际的显示和位置隐藏的内容到一个单独的功能:

(function() { 
    var delay = 400, 
     timeout; 

    function showChild(posLeft) { 
     $(this).children(".hidden-content").css('left', posLeft).show(); 
    } 

    $("#static .wrapper").mouseenter(function (e) { 
     var that = this,  
      event = e; 

     if (timeout) { 
      clearTimeout(timeout); 
     } 
     timout = setTimeout(function() { 
      var parentOffset = $(that).parent().offset(); 
      var relX = event.pageX - parentOffset.left; 
      showChild.call(that, relX); 
     }, delay); 
    }).mouseleave(function() { 
     if (timeout) { 
      clearTimeout(timeout); 
     } 
     $(this).children(".hidden-content").hide(); 
    }); 
}()); 

Fiddle

+0

thxxxxx很多! – user2706463

+0

如果我的答案解决了问题,则应将其标记为“正确”。 – jukempff