1

我有这个标记(简化):

<div class='item'>
  <a> one link </a>
  <a class='trash'><img src='trash.png'/></a>
</div>

当鼠标进入时,我突出显示 div,并显示(否则隐藏)“垃圾”链接(它就像一个小垃圾箱),以便用户可以删除链接。

我不能使用“悬停”效果,因为我需要它们成为现场活动。所以我正在做鼠标悬停和鼠标悬停。这是代码:

$('div.link').live('mouseout', function(e){
        console.log(e)
        if(e.target == this){
            $(this).removeClass('hover');
            $(this).children('a.trash').fadeOut();
        }
    });

(鼠标悬停正好相反)。

动画看起来很古怪,我做错了什么?

非常感谢!

4

1 回答 1

13

当鼠标进入和离开任何子元素时,也会触发mouseoverand事件。mouseout尝试改用mouseenterandmouseleave事件。

不幸的是,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);
});
于 2009-10-08T18:38:11.573 回答