我有这个标记(简化):
<div class='item'>
<a> one link </a>
<a class='trash'><img src='trash.png'/></a>
</div>
我在鼠标进入时突出显示div,并显示(否则隐藏)'垃圾'链接(它就像一个小垃圾桶),以便用户可以删除该链接。
我不能使用'悬停'效果,因为我需要它们是实时事件。所以我正在做mouseover和mouseout。这是代码:
$('div.link').live('mouseout', function(e){
console.log(e)
if(e.target == this){
$(this).removeClass('hover');
$(this).children('a.trash').fadeOut();
}
});
(鼠标结束时完全相反)。
动画看起来很古怪,我做错了什么?
非常感谢!
答案 0 :(得分:13)
当鼠标进入和离开任何子元素时,也会触发mouseover
和mouseout
事件。请尝试使用mouseenter
和mouseleave
事件。
不幸的是,live方法目前不支持这些方法。添加/删除链接时,您必须手动绑定它们。
function toggleDelete() {
$(this)[($(this).hasClass('hover') ? 'remove' : 'add') + 'Class']('hover');
$(this).find('a.trash').toggle();
}
$('div.link').bind('mouseenter, mouseleave', toggleDelete);
$('.add').click(function(e) {
var link = $('<a />').addClass('link');
link.bind('mouseenter, mouseleave', toggleDelete);
$('.parent').append(link);
});