微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 鼠标悬停,鼠标悬停和鼠标

我正在学习和使用jQuery,并希望为某些元素显示一个删除图标.

我有一个外部主div,其中包含元素的包装数量.在元素包装器中,当用户将鼠标悬停在元素包装器上时,我想显示一个删除图标,并在用户从元素包装器移出时将其删除.

使用鼠标悬停和鼠标悬停,我可以显示删除图标,但一旦我将鼠标移动到删除图标上,它将被删除,因为它触发元素包装器的mouSEOut事件.我究竟做错了什么?

解决方法

你的两个选择:

> CSS的:hover伪类(但是只有当你不必支持IE6)
> mouseenter和mouseleave事件

CSS的:hover伪类

您可以使浏览器做所有的工作,如果您不需要IE6支持,通过使用:hover伪类:

/* Don't show `child` elements inside `parent` elements...*/
parent child {
    display: none;
}

/* ...unless the `parent` element is being hovered over */
parent:hover child {
    display: block; /* or inline-block or whatever */
}

Live example

然而,IE6不支持:hover伪类,除了元素. IE7和所有最近的其他浏览器.

mouseenter和mouseleave事件

如果CSS没有为您做,那么您正在寻找的是鼠标和鼠标事件,这些事件是IE特定的,但是在所有其他浏览器上都由jQuery模拟. jQuery甚至有一个方便的功能,hover,用于将处理程序连接到这两个事件,以便您可以轻松完成您要查找的内容.

$(...your parent element...).hover(
    function() {
        // Called when the mouse enters the element
    },function() {
        // Called when the mouse leaves the element
    }
 );

这是一个完整的live example

HTML:

<div>Hover over me <span class='del'>[X]</span></div>
<div>And me <span class='del'>[X]</span></div>
<div>And me <span class='del'>[X]</span></div>

JavaScript使用jQuery:

$('div').hover(
  function() {
    $(this).find('span.del').show();
  },function() {
    $(this).find('span.del').hide();
  }
);

你的鼠标悬停和鼠标悬停问题的原因是它们会起泡,因此当您的鼠标移动到删除元素时,您的父元素上的mouSEOut处理程序会从底层元素看到冒泡的鼠标. mouseenter和mouseleave不要泡,所以他们没有这个问题.

原文地址:https://www.jb51.cc/jquery/179333.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐