Сам по себе, e.target
является только элементом и не сможет иметь функцию .attr()
. Это должно отобразиться в вашей консоли.
Кроме того, вы не передаете аргументы функции. Рассмотрим следующее.
function test(e) {
if (e == undefined) {
console.log("Event is Undefined");
return false;
}
let tg = $(e.target).data('tg');
console.log(tg); // error - target is undefined
}
$("#btn-1").on('click', function(event) {
let fn = $(this).data('fn');
window[fn](event);
});
$("#btn-2").on('click', function(event) {
let fn = $(this).data('fn');
window[fn]();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="btn-1" data-tg='imgt' data-fn='test'>Test 1</button><button id="btn-2" data-tg='imgt' data-fn='test'>Test 2</button>