2017-08-23 48 views
-1
function drag_drop(event) { 
    event.preventDefault(); /* Prevent undesirable default behavior while dropping */ 
    var elem_id = event.dataTransfer.getData("text"); 
    event.target.appendChild(document.getElementById(elem_id)); 
    $('#app_status').innerHTML = "Dropped "+elem_id+" into the "+event.target.getAttribute('id'); 
    document.getElementById(elem_id).removeAttribute("draggable"); 
    document.getElementById(elem_id).style.cursor = "default"; 
    droppedIn = true; 
} 

此功能工作正常,但是当我用jQuery的$()方法,而不是document.getElementById更新它给出了一个错误:

index.js:22 Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'. 
    at drag_drop (index.js:22) 
    at HTMLDivElement.ondrop (index.html?_ijt=ifai0ih42qnjkillablo2ulcln:15) 

更新后的功能如下:

function drag_drop(event) { 
    event.preventDefault(); /* Prevent undesirable default behavior while dropping */ 
    var elem_id = event.dataTransfer.getData("text"); 
    event.target.appendChild($('#' + elem_id)); 
    $('#app_status').innerHTML = "Dropped "+elem_id+" into the "+event.target.getAttribute('id'); 
    $('#' + elem_id).removeAttribute("draggable"); 
    $('#' + elem_id).style.cursor = "default"; 
    droppedIn = true; 
} 
+6

'$(“#app_status”)。html(“Dropped”...)' - 您应该找到一本基本的jQuery书籍或教程。 – Pointy

+1

似乎你正在混合'jquery'和'vanilla js' – kukkuz

+0

app_status是元素的id,其中elem_id是可变的,其中包含id –

回答

0

很少发生在你的代码,按jQuery

function drag_drop(event) { 
    event.preventDefault(); /* Prevent undesirable default behavior while dropping */ 
    var elem_id = event.dataTransfer.getData("text"); 
    event.target.appendChild($('#' + elem_id)); 

    // ---- **Updated Code** 
    $('#app_status').html("Dropped "+elem_id+" into the "+event.target.getAttribute('id')); 
    $('#' + elem_id).removeAttr("draggable"); 
    $('#' + elem_id).css({cursor: "default"}); 


    droppedIn = true; 
} 
+0

同样的错误发生了 –

+0

你有没有在jQuery中包含任何版本你的申请???如果没有,则包含'' – Shiladitya

+0

已经添加 –