javascript - 悬停时保持 jQuery `Appended` 元素打开

标签 javascript jquery hover

我自己已经回答了(参见答案)

所以从 jQuery `[jQuery created Element].is(“:hover”)` Only Seems To Work In Chrome 开始.

更多背景:
当我们从 DOM 中已有的元素移动到 jQuery 的 .append() 方法添加的元素时,我试图保持悬停。

我使用的是.is(":hover")。此方法在 Chrome 中运行良好,但在其他浏览器中不起作用。正如我们发现的(从上面的链接)它不久前就被删除了。

旧:悬停方法

var 
    hov = $("<div class=\"over\">I'm Over You</div>"),
    box = $("<div>Result: WAITING</div>")


$("body").append(hov).append(box);

$("#MeHover").on('mouseleave', function(){
    var d = new Date();
    box.text("Result: " + hov.is(":hover").toString().toUpperCase() );
});

最佳答案

关于mouseleave监听器,如果 hovered 保持打开状态或hoverer元素是 relatedTarget

var $hovered = $('#MeHover');
var $hoverer = $("<div class=over>I'm Over You</div>");

$("body").append($hoverer);

$hovered.add($hoverer).mouseenter(function() {
  $hoverer.fadeIn();
}).mouseleave(function(e) {
  if (e.relatedTarget != $hoverer[0] && e.relatedTarget != $hovered[0])
    $hoverer.fadeOut();
});
.over {
  display: none;
  position: absolute;
  top: 20px;
  left: 0;
  right: 0;
  background: green
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="MeHover">
  Hover Over Me
</div>

关于javascript - 悬停时保持 jQuery `Appended` 元素打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347019/

相关文章:

javascript - 如何删除不在另一个对象中的一个对象的属性

jquery - 更改 C3.js 图表上的工具提示格式

JavaScript:第一次鼠标悬停后 z-index 不会改变

JavaScript OnClick 函数被调用一次后不再调用

javascript - 尝试在 localStorage 中存储对象

javascript - jquery ajax 请求的 JSONP 解析错误

javascript - 为具有相同类的每个元素运行一个函数

jquery - 我可以将鼠标悬停,但不能通过点击将元素传递到下面的项目吗?

html - 悬停时更改 Y 位置

c# - 使用javascript循环遍历c#数组中的值