可拖动div内的图像拖住了我的拖放位置

问题描述 投票:1回答:2

客户要求整个div可拖动,该div包含一些文本和图像。我将div转换为<li>标签,并使用Mootools可拖动的好东西使其全部正常工作。直到客户端单击图像并开始在IE中拖动它。然后浏览器认为您要拖动图像,而忽略父li的拖放事件。

关于我可以采取什么措施来阻止图像可拖动?还是至少触发父母的onmousedown事件?

以下是一些示例HTML:

<ul class="asset_list">
  <li id="1"><img src="test1.jpg" />Blah blah blah</li>
  <li id="2"><img src="test2.jpg" />Blah blah blah</li>
  <li id="3"><img src="test3.jpg" />Blah blah blah</li>
</ul>

这是一些我用来拖放的JS:

// Set up drap and drop
$$( 'ul.asset_list li' ).each( function( item ){
 item.removeEvents();
 item.addEvent('mousedown', function(e) {
  e = new Event(e).stop();

  // Create our clone of the asset for dragging
  var clone = this.clone( true, true );
  clone.removeEvents();
  clone.addClass( "dragging" );
  clone.setStyles(this.getCoordinates()); // this returns an object with left/top/bottom/right, so its perfect

  var drag = clone.makeDraggable({
    droppables: [TrailStream.playlist],
    precalculate: true,
    revert: true,
   }
  }); // this returns the dragged element

  drag.start(e); // start the event manual
 });
});
javascript mootools mootools-events
2个回答
1
投票

5年后,我遇到了同样的问题,发现这是最适合我的解决方案:

'dragleave' of parent element fires when dragging over children elements

根据您的情况:

.asset_list * {
    pointer-events: none;
}

简单有效:)


0
投票

通过将图像转换为跨度,并采用与图像的宽度,高度,边框等相同的样式,然后将背景图像设置为嵌入式样式,解决了这一问题。 IE现在将其像对待任何其他HTML元素一样对待,而不是像“图像”一样对待,因此拖动是固定的。并非完美的可访问性友好,但是两者都不可拖放!

© www.soinside.com 2019 - 2024. All rights reserved.