2017-07-12 66 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