Перетащите HTML 5 jQuery: e.dataTransfer.setData () с помощью JSON - PullRequest
8 голосов
/ 02 марта 2012

Вот мой драгстарт:

dragstart: function(e) {
    $(this).css('opacity', '0.5');
    e.dataTransfer.effectAllowed = 'move';
    e.dataTransfer.setData('application/json', {
        id: $(this).attr('id'),
        header: $('header', this).text()
    });
},

Я хотел бы передать некоторую информацию, такую ​​как идентификатор и текст. Моя капля:

drop: function(e) {
    var data = e.dataTransfer.getData('application/json');
    alert(data);
    $(this).attr('id', data.id);
    $('header', this).text(data.header);
},

Но данные не определены, я не могу получить доступ к своим данным. Это правильный путь?

Спасибо'S!

Ответы [ 2 ]

9 голосов
/ 06 января 2014

в начале перетаскивания

var testjson = {name:"asd",tall:123};
e.dataTransfer.setData("text/plain",JSON.stringify(testjson));
e.dataTransfer.effectAllowed = "copy";

в капле

var data = e.dataTransfer.getData("text/plain");
console.log(JSON.parse(data));

и вы получите

Object {name: "asd", tall: 123} 

в console.log

0 голосов
/ 21 мая 2012

Если вы включили effectAllowed в функцию dragstart, например:

e.dataTransfer.effectAllowed = 'move';

Тогда, насколько я понимаю, вам нужно определить эквивалентный dropEffect в функции drop:

e.dataTransfer.dropEffect = 'move';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...