Правильная привязка события щелчка к функции с помощью .on()

#javascript #jquery

#javascript #jquery

Вопрос:

Как уже упоминалось, я пытаюсь привязать нажатие тегов ‘a’ на моей странице к моей функции handleClickTag(), но мне трудно реализовать метод .on() для привязки функции и тега ‘a’. Я не уверен, что bind() будет более подходящим. Надеюсь, это имеет смысл!

 a.data('tagId', tag.id); //save info inside html element
$(a).on('click', handleClickTag(a)); //bind click event of the "a" tag to the "handleClickTag" function - need help here

//code above contained inside forEach loop

function handleClickTag (event) {
 var link = $(event.target);
 
 var tagId = link.data('tagId');//would like to retrieve data from the tagId variable

 //---continue function after data is correctly retrieved
 } 

Комментарии:

1. $(a).on(‘click’, handleClickTag(a)); => $(a).on(‘click’, handleClickTag); должно сработать. также вы можете захотеть использовать preventDefault(); в вашем обработчике, чтобы поведение тега привязки по умолчанию не выполнялось, а выполнялось только то, что определено в вашем обработчике…

Ответ №1:

Чтобы передать аргумент функции, вы можете обернуть вызов функции внутри анонимной функции:

 $(a).on('click', function(){ handleClickTag(a); });
 

Хотя я думаю, что вам не нужно передавать аргумент здесь, должно работать просто следующее:

 $(a).on('click', handleClickTag);
 

Комментарии:

1. Спасибо за помощь — второй вариант работает. Я просто излишне добавлял аргумент!