记录一次mouseleave不生效的问题

五级会员 站长
发表于技术杂文分类
问题代码(mouseout和mouseleave都不生效):

$('.a').on({ mouseenter:function(){ if(!$(this).data('html')){ $(this).data('html',$(this).html()); } $(this).html('<span>点我</span>'); }, mouseout:function(){ $(this).html($(this).data('html')); } });

原因分析:

因为绑定对象是a标签且内部包含span标签,不存在padding属性,鼠标进入后触发mouseenter或mouseover,由于a和span完美切合,所以会导致无法触发mouseleave或mouseout。

解决方法:

$('.a').on({ mouseenter:function(){ if(!$(this).data('html')){ $(this).data('html',$(this).html()); } $(this).html('<span>点我</span>'); $(this).off('mouseenter'); }, mouseout:function(){ $(this).html($(this).data('html')).on('mouseenter',function(){ $(this).html('<span>点我</span>'); $(this).off('mouseenter'); }); } });

在鼠标进入后解除mouseenter事件的绑定,鼠标离开后重新绑定mouseenter事件即可。


登录 分类