2015-01-03 114 views
0

我試圖將元素拖放到另一個元素,但它不工作。我得到的錯誤是無法setData('undefined')允許元素拖放

Uncaught TypeError: Cannot read property 'setData' of undefined

Uncaught TypeError: Cannot read property 'getData' of undefined

與視場中的第一個第二個。

我想放棄的元素看起來是這樣的:

<main id="post-it" class="post-it-content"> 
    <div class="vertical-stripes"></div> 
    <div class="vertical-stripes"></div> 
    <ul class="nav"> 
     <li> 
      <span class="normal-text"></span> 
      <span class="normal-text"></span> 
     </li> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li class="notes-footer"></li> 
    </ul> 
    <textarea id="notes-area"></textarea> 
</main> 

這是畫面中的黃色看,還注意到了下來。

然後我處理拖入和滴像這樣:

var dragAndDrop = { 
    allowDrop: function(e) { 
     e.preventDefault(); 
    }, 
    drop: function(e) { 
     e.preventDefault(); 
     var data = e.dataTransfer.getData("text"); 
     e.target.appendChild(document.getElementById(data)); 
    }, 
    drag: function(e) { 
     e.dataTransfer.setData("text", e.target.id); 
     e.dataTransfer.effectAllowed = 'move'; 
    } 
} 

並綁定元件與相應功能是這樣的:

$('.post-it-content').on('dragstart', dragAndDrop.drag); //Yellow note element 
li.on('drop', dragAndDrop.allowDrop); 
li.on('dragover', dragAndDrop.drop); 

li元件(一個或多個)是正方形(s)in this image:

example image

現在我不理解的是爲什麼我得到了我得到的錯誤,我完全像這裏找到的例子那樣(儘管不是用圖像):http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_draganddrop但對我來說它不起作用。任何想法爲什麼這不起作用?

+0

嘗試做e.dataTransfer的的console.log,看看它是 –

+0

@LiamSchauerman以及這顯然是不確定的,但我不明白爲什麼它是不確定的。 – Chrillewoodz

回答

2

它與jQuery的一個問題,你可以通過添加以下代碼解決它時,頁面加載或使用數據傳遞

jQuery.event.props.push('dataTransfer'); 

例子:

jQuery.event.props.push('dataTransfer'); 
event.dataTransfer.setData("Text", event.target.id); 
0

這是因爲jQuery的包裝的我們必須將'dataTransfer'添加到Event對象。

注:$.event.props jQuery的3.0移除,所以你需要使用 $.event.addProp代替。

例子:

$(document).ready(function(){ 

    $.event.addProp('dataTransfer'); 

});