2017-07-12 27 views
0

我可以通过使用下面的代码来实现在vanilla js中的取消检测。在jQuery中检测拖动取消

el.addEventListener('dragend', event => { 
    let cancelled = event.dataTransfer.dropEffect === 'none'; 
    if(cancelled) { 
    // do something when drag cancelled. 
    } 
}, false); 

而是力图这个片段转换为jQuery的版本,因为jQuery的包裹事件成不拥有dataTransfer属性jQuery的事件时,我失败了。

el.on('dragend', event => { 
    console.log(event.dataTransfer); // => undefined 
}); 

我想知道如何使用jQuery检测阻止取消。
顺便说一句,我没有使用jQuery UI,但我想尝试一下,如果事情会变得更容易。

回答

2

您可以使用jQuery事件.originalEvent属性来获取.dataTransfer财产

$("div") 
 
.on("dragend", function(e) { 
 
    console.log(e.originalEvent.dataTransfer) 
 
})
div { 
 
    padding: 8px; 
 
    margin: 8px; 
 
    border: 1px solid blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script> 
 
<div draggable>drag</div> 
 
<div droppable>drop</div>

+0

大,没有一见钟情找到'originalEvent'。 – choasia