1

イベントにイベントハンドラーを追加したいのですがdrop、最初の試みはjquery 1.9.1を使用することです

var dropIt = function (e) {
    console.log(e);
    console.log(e.dataTransfer);
    e.stopPropagation();  
    e.preventDefault(); 
}

     $('#drop-area').on('drop',dropIt);

e.dataTransferしかし、オリジンを使用すると、これは印刷できません:

$('#drop-area')[0].addEventListener('drop', dropIt, false);

それは働くことができますか?

なぜこれが起こるのですか?

4

2 に答える 2

2

jQuery はプロパティを自動的に正規化しないdataTransferため、手動で行う必要があります。例えば

jQuery.event.props.push("dataTransfer");
于 2013-03-04T05:03:29.403 に答える
1

試す

$(document).on('drop','#drop-area',dropIt);

また

<!DOCTYPE HTML>
<html>
    <head>
        <style type="text/css">
            #div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}
        </style>
        <script type="text/javascript">
            function allowDrop(ev)
            {
                ev.preventDefault();
            }

            function drag(ev)
            {
                ev.dataTransfer.setData("Text",ev.target.id);
            }

            function drop(ev)
            {
                ev.preventDefault();
                var data=ev.dataTransfer.getData("Text");
                ev.target.appendChild(document.getElementById(data));
            }
        </script>
    </head>
    <body>
        <p>Drag the W3Schools image into the rectangle:</p>
        <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
        <br />
        <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
    </body>
</html>
于 2013-03-04T05:00:34.433 に答える