#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть метод щелчка, когда пользователь нажимает на строку в моей таблице.
$('.table > tbody > tr').click(function () {
if ($(this).hasClass("info")) {
$(this).removeClass("info");
}
else {
$(this).addClass("info");
}
});
Однако в некоторых ячейках есть ссылки, если щелкнуть ссылку, я бы хотел проигнорировать описанный выше метод. Как я могу это сделать?
Ответ №1:
Просто проверьте, нажата ли ссылка с event.target
помощью и .closest()
:
$('.table > tbody > tr').click(function (e) { //Catch event here
if($(e.target).closest('a').length) return; // Add this
if ($(this).hasClass("info")) {
$(this).removeClass("info");
}
else {
$(this).addClass("info");
}
});
Комментарии:
1. Должно быть
.is('a')
?Closest()
будет перемещаться вверх по DOM, а структура неa > tr
2. @Johan Если внутри есть, например, промежуток
a
,.is()
не будет работать, посколькуtarget
будет промежуток.3. @A.Wolff ВСЕ! … Нет, это не было проблемой, но, прочитав ваш комментарий, OP может быть заинтересован этой скрытой функцией!
4. Могу ли я узнать причину снижения? Просто любопытно, чтобы я мог улучшить свой ответ…
Ответ №2:
Вы можете остановить распространение события щелчка из привязки
$('.table > tbody > tr a').click(function (e) {
e.stopPropagation()
});