У меня проблема очень похожа на: "JQuery 'click' не стреляет, когда значок включен на кнопку" , однако разрешение для этого сообщения не дает решения для меня, поэтому я думаю, что что-то другое может продолжаться.
Существенная проблема заключается в том, что у меня есть кнопка с иконкой в ней. Когда я нажимаю кнопку (например, текст), целью события является элемент кнопки; однако, когда я нажимаю на значок, целью события является объект значка. К сожалению, это очень раздражает, поскольку я храню данные на моей кнопке, к которой я хотел бы получить доступ.
Вот HTML:
<button class="btn btn-success vote-button" id="btnUpVote" type="button" data-vote="1">
<i class="fa fa-thumbs-up"></i>
Up Vote!
</button>
<button class="btn btn-danger vote-button" id="btnDownVote" type="button" data-vote="-1">
<i class="fa fa-thumbs-down"></i>
Down Vote!
</button>
И вот Javascript:
function sendVote(event) {
var $btn = $(event.target);
console.log(parseInt($btn.data('vote'));
console.log($btn.prop('tagName'));
}
$('body').on('click', 'button.vote-button', sendVote);
Нажав на текст ( "Вверх Vote!" или "Down Vote!" ), вы получите следующий вывод консоли:
1
BUTTON
-1
BUTTON
Нажатие на значок (и т.д.) приводит к следующему выводу консоли:
NaN
I
NaN
I
Несмотря на то, что я зарегистрировал дескриптор элементов с помощью кнопки "button.vote-button". Кто-нибудь знает, почему это происходит? Мне не хотелось бы предоставлять атрибуты данных значкам.