HTML5 Drag&Drop - обработка событий с помощью jQuery

Поэтому я сталкивался с этим несколько раз, и теперь мне, наконец, надоела эта тема. Поиск и гугл об этом смущают меня каждый раз, и теперь мне нужно спросить себя здесь.

Я собираюсь реализовать собственный HTML5 drag&drop в веб-приложении. Он отлично работает в Chrome и IE тоже (по крайней мере, когда я пытался в прошлый раз).

Проблема в том, что привязка событий через jQuery не работает должным образом в Firefox, в то время как в Chrome! Это мой код:

$(document).on('dragstart','.leistung', function(){
    cedamed.handlers.dragElement(event);
});

И это мой обработчик:

this.dragElement = function(event){
    var dataObj = {}; 
    dataObj.category = event.target.getAttribute('class');
    dataObj.description = event.target.getAttribute('description');
    dataObj.code0 = event.target.getAttribute('code0');
    dataObj.code1 = event.target.getAttribute('code1');
    dataObj.code2 = event.target.getAttribute('code2');
    event.dataTransfer.setData('Text',JSON.stringify(dataObj));
    console.log("dragging");
};

Работает в Chrome, Firefox выдает мне следующую ошибку:

ReferenceError: event is not defined

Он указывает на строку с:

cedamed.handlers.dragElement(event);

Я сталкивался с "решениями", в которых использовалось свойство originalEvent события api, которое часто заставляло все работать нормально в FF, но в моем случае это совсем не так. Я заставил его работать, установив атрибут 'ondragstart' непосредственно в HTML, но не должен ли он работать с 'jQuery.on'?

Извините, есть несколько вопросов к этой теме, но я просто не понимаю, что происходит в этой области. Не могли бы вы дать мне понимание, что здесь не так?

1 ответ

Я обнаружил, что должен передать "событие" в качестве аргумента функции обратного вызова jQuery в "on", например:

$(document).on('dragstart','.leistung', function(event){
   cedamed.handlers.dragElement(event);
});

С использованием originalEvent в 'drageElement' я наконец заработал. Сожалею...

Другие вопросы по тегам