Jquery - live('hover')和mousemove

时间:2010-08-29 08:46:38

标签: jquery

我用mousemove的悬停功能有点问题。 但是有什么不对?

工作示例 - > http://www.jsfiddle.net/V9Euk/306/

$('.tip').live('hover', function(e)
{    
    if (e.type == 'mouseover')
    {
      $('#'+this.id+' .tooltip').show();
    }        
    if (e.type == 'mousemove')
    {
        alert('move');
         $('#'+this.id+' .tooltip').css({ left: e.pageX + 20, top: e.pageY + 20});
    }        
    if (e.type == 'mouseout')
    {
        $('.tooltip').hide();
    }    
});

3 个答案:

答案 0 :(得分:5)

没有hover事件 - 您需要包含您使用的所有三个事件,例如:

$('.tip').live('mouseout mousemove mouseover', function(e)

请参阅live()中多个事件的jQuery documentations示例:

$('.hoverme').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});

答案 1 :(得分:0)

问题是hover()映射到mouseover和`mouseleave),而不是你正在使用的事件。

$("...").live("hover", function(e) {
  ...
});

相当于:

$("...").live("mouseover mouseleave", function(e) {
  ...
});

如果您也想要mousemove事件,可以使用:

$("...").live("hover mousemove", function(e) {
  ...
});

答案 2 :(得分:0)

哈!您之前删除了相同的问题,在我点击发布回复之后。

.hover()永远不会返回mousemove,它只会返回mouseenter / mouseleave。

您应该使用

直接绑定到mousemove事件
$('.tip').live('mousemove', function(e) {
    // do stuff here
});