получить атрибут данных выбранного элемента в связанной функции - PullRequest
0 голосов
/ 07 января 2020

В сценарии, подобном приведенному ниже, как получить imgt в консоли:

function test(e){
let tg = e.target.attr('data-tg');
console.log(tg); // error - target is undefined
}

$('button').on('click', function(e){
let fn = $(this).attr('data-fn');
window[fn]();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button data-tg='imgt' data-fn='test'>CLICK</button>

1 Ответ

2 голосов
/ 07 января 2020

Сам по себе, 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...