2010-08-29 51 views
3

我用mousemove悬停函数有一个小问题。 但是,怎么了?jquery - live('hover')和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(); 
    }  
}); 
+0

请检查工作的例子。他没有启动鼠标移动 – Peter 2010-08-29 08:50:30

+2

*小问题*不是一个很好的问题描述。请更具体一些。 – 2010-08-29 08:51:03

回答

5

没有hover事件

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

相当于你使用的是这样的:

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

jQuery documentations例如对多个事件中live()

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

嘿嘿江,一如既往...非常感谢你!彼得(Koh chang) – Peter 2010-08-29 08:52:54

0

的问题是,hover()映射到mouseover和`鼠标离开),不是你正在使用的事件。如果你想mousemove事件也可以使用

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

: - 你需要,而不是包括所有三个事件

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

它实际上是mouseleave :) – Marko 2010-08-29 08:51:50

0

哈!您之前删除了同一个问题,我正要点击发布回答

.hover()永远不会返回鼠标移动,它只会返回mouseenter/mouseleave。

你应该直接绑定到鼠标移动事件,使用

$('.tip').live('mousemove', function(e) { 
    // do stuff here 
});