我有一个绑定(bind) mouseenter 事件的延迟函数:
$(window).load(function(e) {
var $container = $('.container');
$container.mouseenter(function(e) {
//do something
});
...
});
问题是当 load 事件触发时,鼠标可能已经位于元素上方,因此在 mouseenter 事件绑定(bind)之前。
我可以通过在页面加载处理程序末尾放置一些代码来一次性检查鼠标是否在元素内部并手动触发 mouseenter 事件来解决此问题:
// check if the mouse is inside $container
if(mouse is inside $container)
$container.mouseenter();
如何在加载事件中检查鼠标是否位于元素上?
我尝试了 $container.is(':hover')
但它不起作用。
最佳答案
我还没有测试它,但认为你想要这样......
function checkMouseCollision(obj) {
var offset = obj.offset();
objX= offset.left;
objY=offset.top;
objW=obj.width();
objH=obj.height();
var mouseX = 0;
var mouseY = 0;
$().mousemove( function(e) {
mouseX = e.pageX;
mouseY = e.pageY;
});
if((mouseX>objX&&mouseX<objX+objW)&&(mouseY>objY&&mouseY<objY+objH)){
alert("hovered")
};
};
checkCollision($(".box"))
关于jQuery:如何检查鼠标是否位于元素上方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8597663/