当前位置: 首页 > 知识库问答 >
问题:

HTML5拖放无法正常工作

虞展
2023-03-14

我在这里举了一个例子:

http://jsfiddle.net/NQQL6/

当我开始拖动链接时,购物车应该会变成绿色。当商品在购物车上拖动时,购物车应变为红色。

这有效,但前提是购物车是空的:|

如果其中有任何其他元素leave似乎是在我将项目拖动到这些元素上时触发的。我如何防止这种情况发生?

我尝试将事件侦听器移动到文档元素并检查event.target购物车的子级还是孙子级,但即使项目在购物车区域内,离开似乎也会在身体上随机触发,因此我的类在不应该:(

编辑:在这里找到了一些黑客解决方案:拖动子元素时父元素的“拖动”

因此您可以删除此Q:)

共有2个答案

左丘峰
2023-03-14

对游戏来说有点晚,您可能解决了这个问题,但是您需要保留一个引用计数器来计算dragleave/dragenter事件:

var counter = 0;

cart.addEventListener('dragenter', function(event){  
    counter++;
    cart.classList.add('ontop', 'activate');
    console.log('enter');
});

cart.addEventListener('dragleave', function(event){
  counter--;
  if (counter === 0) {
    cart.classList.remove('ontop');
  }
  console.log('leave');
});

看这里

另请参阅此答案。

东方俊杰
2023-03-14

您需要将以下css应用于列表:

ul{ pointer-events: none; }

请参阅此更新的小提琴:

http://jsfiddle.net/NQQL6/1/

编辑:试试这个,http://jsfiddle.net/NQQL6/6/

稍微多一点的js逻辑,但它现在应该工作了。

 类似资料:
  • 我在网格窗格中用两个ImageView做拖放测试。我的问题是,当我完成拖放并将目标imageview移动到源imageview并释放鼠标时,我错误地以显示“img2”中的图片而不是“img1”中的图片结束。当我注释掉“setOnDragExited”方法时,我最终得到了正确的图像“img1”,任何建议都将不胜感激。

  • #div1, #div2 {float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;} function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Tex

  • 我正在使用本机拖放html5 api开发拖放界面。我们已经在其他部分使用了jQuery拖动,但是它在这个特定部分的表现很差,所以我们使用原始的JavaScript。 本质上,标记看起来像这样... 我为“dragstart”创建一个addEventListener并运行以下函数 它将我的类完美地应用于原始元素,但我似乎不能移动原始元素。浏览器创建克隆/幽灵图像...我看到你可以创建自己的图像显示,

  • 问题内容: 因此,我的设置无法按我想要的方式工作。因此,每当我运行该程序时,它就会立即从0变为100。我尝试使用,任务,并尝试了,但没有任何尝试。 这是我的程序: @MadProgrammer这是我尝试做一名摆动工作人员并将每个名称写入文档并更新进度栏的尝试。该程序将达到86%左右并停止运行,永远不会创建完成的文档。该程序将创建一个空白文档。这是我首先创建的SwingWorker对象,这是两种方法

  • 问题内容: 我在JLayeredpane上有两个JPanels。其中一个显示pdf,重叠的一个具有透明背景(我使用过setOpaque(false))。现在,我可以将图形添加到透明面板中,这样看来我实际上是在注释pdf。我想要一个橡皮擦工具来删除这些注释。我尝试使用以下代码 其中path是由多条线构成的形状。现在,不是在先前的图形上绘制 透明线 ,而是绘制 黑线 。我要去哪里错了? 问题答案: 请

  • 问题内容: 这看起来有效,但无法正常工作。我希望菜单悬停时’huh’div不透明。我尝试了淡入/淡出效果,但效果很好,但只有一次很奇怪。 问题答案: 不带点使用: