Подтвердить что ты не робот

Событие Click в строке таблицы - только триггер, если ничего не "щелкнули",

У меня возникают некоторые проблемы с некоторым кодом jQuery, и я надеюсь и думаю, что решение относительно просто.

Скажем, у меня есть таблица вроде:

<table>
   <tr>
     <td><input type="checkbox" name="hai" value="der" /></td>
     <td><a href="mypage.php">My link</a></td>
     <td>Some data</td>
     <td>Some more data</td>
   </tr>
   ...
</table>

Теперь через JavaScript я делаю следующее в jQuery (document).ready();

jQuery("table tr").click(function(){
   var row = jQuery(this);
   var hasClass = row.hasClass("highlight");
   jQuery("table tr").removeClass("highlight");
   if(!hasClass){
     row.addClass("highlight");
   }
});

Все это довольно простой материал - я хочу, чтобы иметь возможность щелкнуть строку и подсвечивать ее, и только одна строка может быть подсвечена за раз (очевидно, в моем фактическом коде я делаю больше) - теперь здесь моя проблема:

Когда пользователь нажимает тег привязки или флажки, это вызывает также событие щелчка строки, и я не могу решить, как отфильтровать это? Я знаю, что мне нужно включить событие в обработчик кликов, но как проверить его таким образом, чтобы он работал как можно большим количеством браузеров?

4b9b3361

Ответ 1

Попробуйте добавить обработчики к другим элементам, которые отвечают на события щелчка и останавливают событие от пузырьков. Это будет в дополнение к тому, что у вас уже есть.

jQuery('table input, table a').click( function(e) {
    e.stopPropagation();
    return true;
}):

Ответ 2

$("table tr").click(function(event){
   if (event.currentTarget.tagName != "TR") { return; }

   $(this).closest("table").find("tr.highlight").removeClass("highlight");
   $(this).addClass("highlight");
});

Ответ 3

$("table tr").click(function(e){

if (e.target instanceof HTMLInputElement || e.target instanceof HTMLAnchorElement){
return;
}
var row=$(this);
$('table tr').removeClass('highlight');
row.addClass('highlight','normal');

})