ウェブサイト検索

javascript - 未定義のプロパティ 'setData' を読み取ることができません - jQuery UI Touch Punch


jQuery UIを通して呼び出すと、なぜsetDataとgetDataが未定義になるのか、私はよくわかりません。

私はやっています

$(`#selector`).draggable({
            start: function(event: any) {
                drag(event);
            },
            stop: function(event: any) {
                console.log('stopped');
            }
        });

そして drag() の中で:

drag(event: any) {
    event.originalEvent.dataTransfer.setData("text, application/x-moz-node", event.target.id);
}

この originalEvent は、こちらの解決策を参照しています

しかし、私はまだ同じ結果を受け取っています。

Cannot read property 'setData' of undefined

私もTypeScriptを使っています(どれくらい違いがあるのかはよく分かりません)。

回答 #1

これはjQueryの問題であり、ページが読み込まれたとき、またはdataTransferを使用する前に以下のコードを追加することで解決できます

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

例:

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

回答 #2

これはjQueryのラッパーのためです。Eventオブジェクトに 'dataTransfer' を追加する必要があります。

注意: $.event.props は jQuery 3.0 で削除されたため、代わりに $.event.addProp を使用する必要があります。

例:

$(document).ready(function(){

    $.event.addProp('dataTransfer');

});