javascript - jQuery :hover selector not working as expected in Edge and Firefox

标签 javascript jquery html css

我正在尝试使用 sortable js 创建一个拖放系统,您可以在其中通过简单地将它们从容器中扔出来删除图 block 。 问题是虽然代码适用于 Chrome,但不适用于 Firefox、Edge 或 IE。 这三个的结果是它永远不会删除磁贴

链接:http://skynet.ie/~alanfinnin/stack_overflow/js_drag_and_drop/

我四处寻找我尝试过的解决方案..

  1. 将所有的不透明度改为 1,没有变化
  2. 使用不同风格的悬停,即 is(hover)
  3. 悬停时更改 div 的颜色,这有效但没有解决问题

    onEnd: function(event) {            
        if (($('#lists:hover').length == 0)) {
            alert("delete");
        }
    }
    

我希望当 tile 移出 div 时,悬停将变为 0 并引发警报,但结果在 Firefox 和 Edge/IE 中始终为 0,就好像它从未离开过 div 一样

注意:我正在使用 IE 11 和 firefox 版本 67.0.1

最佳答案

触发 onEnd 事件时,Sortable 会为您提供鼠标位置。

既然你有了它并且有了容器的位置和尺寸,你就可以自己计算是掉落在容器内还是容器外。它肯定适用于所有浏览器,因为我们所做的只是简单的计算。

您需要的代码是:

onEnd: function(event) {
    let mousePositionX = event.originalEvent.clientX; //mouse position x
    let mousePositionY = event.originalEvent.clientY; //mouse position y

     //container is the sortable container
     let container = $("div#lists");
     let containerOffsetLeft = parseInt(container.offset().left);
     let containerWidth = parseInt(container.width());
     let containerOffsetTop = parseInt(container.offset().top);
     let containerHeight = parseInt(container.height());

     if(
        (mousePositionY < containerOffsetTop) ||
        (mousePositionY > (containerOffsetTop + containerHeight)) ||
        (mousePositionX < containerOffsetLeft) ||
        (mousePositionX > (containerOffsetLeft + containerWidth))
     ) {
        alert('remove');
     }
}

关于javascript - jQuery :hover selector not working as expected in Edge and Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56493395/

相关文章:

javascript - 如何使用 JavaScript 检查插入到 HTML 表中的值的类型

javascript - 用数组替换字符串

javascript - 如何检测您的 React 应用程序是否已在服务器上渲染?

javascript - 在组件之间的 vue.js 中传递变量

javascript - IE Javascript 值未更新

javascript - 根据条件强制刷新

html - SEO 标记是否需要同时出现在网站的两个版本上?

javascript - 在渲染方法中将 props 传递给组件?

javascript - 两个并排彼此相对的无序列表

javascript - 显示幻灯片切换不起作用