В каждом событии jQuery jQuery предоставляет currentTarget
, который совпадает с this
, но насколько я понимаю, свойства currentTarget
зависят от вашего браузера.jQuery event currentTarget dataset
В chrome я могу получить event.currentTarget.dataset
, который дает мне данные от элемента, который начал это событие, но я не думаю, что это работает во всех браузерах. Единственное кросс-браузерное решение, которое я знаю, - это получить данные, обернув currentTarget в другом объекте jQuery, как показано ниже.
var div = jQuery("<div/>").data("numbers", [1,2,3]);
div.click(function(e) {
var data = jQuery(e.currentTarget).data();
console.log(data.numbers);
});
Кто-нибудь знает перекрестное решение браузера, чтобы получить данные, не создавая новый объект JQuery с this/currentTarget
?
Update: Просто чтобы быть ясно, и поэтому я спрашиваю:
Мы преобразовывают элемент, который вызвал событие в объект JQuery снова, послав его через JQuery второй раз (это было уже JQuery объект для создания события). Я надеюсь на способ переноса уже созданного объекта jQuery в событие. Слайды 44 & 45 на this presentation объясняют мой мыслительный процесс.
Вы можете сделать это с помощью event.currentTarget.dataset
, но я не думаю, что это кросс-браузерное решение. В приведенном выше коде вы можете использовать объект кеширования jQuery div
для получения данных без повторного создания объекта jQuery. Это работает для этого конкретного примера, но что бы вы сделали с динамическим событием, как delegate
события ниже:
jQuery("#container").on('click', '.pop-data', function(e) {
var data = jQuery(e.currentTarget).data();
alert(data);
});
кодом, приведенных выше работ и не является плохим решением, но кто-нибудь знает способ получить данные без создавая новый объект jQuery?
Почему вы хотите другое решение? –
В чем проблема с тем, как jQuery был написан для использования? –
@arun Производительность. Его для плагина. – Dol