jquery html 5 dragstart .on('dragstart',function(e){}) e.dataTransfer.setData() doesn't work

zsytssk picture zsytssk · Dec 19, 2012 · Viewed 36.3k times · Source

chrome throw err: Cannot call method 'setData' of undefined, I find the e is not equal to window.event(it havn't propert dataTransfer);both has very big different

I find both almost equal in the click event.

I used http://code.jquery.com/jquery-latest.js.

I don't use drag feature,I just want know why. it is new feature in html 5,jquery still behind of it ?. or jquery team don't want support it?? or some other reason

Answer

John Doe picture John Doe · Dec 19, 2012

In the callback function you get a jQuery wrapper over a native event. Use the originalEvent property of passed argument:

$('...').on('dragstart', function (event) {
    event.originalEvent.dataTransfer.setData('...', '...');
});

P.S. dont' forget to set the draggable="true" attribute for the element to be dragged.