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' я наконец заработал. Сожалею...