Skip to content

Instantly share code, notes, and snippets.

@ricardobeat
Created January 10, 2013 17:52
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ricardobeat/4504218 to your computer and use it in GitHub Desktop.
Save ricardobeat/4504218 to your computer and use it in GitHub Desktop.
Pass any kind of object via .dataTransfer (drag & drop API)
/*
Easy way to "transfer" any native objects with the Drag & Drop API
@ricardobeat
$('.draggable').on('dragstart', function(e){
App.dragData.set(e, {
type: 'blablabla'
, items: [1,2,3]
})
})
$('.dropzone').on('drop', function(e){
var data = App.dragData.get(e)
// typeof data === 'object'
// => {
// type: 'blablabla'
// , items: [1,2,3]
// }
})
*/
(function(exports){
var _uid = 0
var dragData = {
set: function(e, data){
var dataTransfer = e.dataTransfer || e.originalEvent.dataTransfer
, uid = ++_uid
dataTransfer.setData('text', uid)
SR.drag[uid] = data
}
, get: function(e){
var dataTransfer = e.dataTransfer || e.originalEvent.dataTransfer
, uid = dataTransfer.getData('text')
, data = SR.drag[uid]
delete SR.drag[uid]
return data
}
}
exports.dragData = dragData
})(window)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment