Как я могу избежать запуска этого кода jQuery при нажатии на гиперссылку внутри таблицы html?

У меня есть html-таблица, и когда пользователи щелкают по строке, я хочу всплывать в диалоговом окне jQuery ui. Это отлично работает, если у вас есть этот код: ПРИМЕЧАНИЕ. Каждая строка tr имеет класс "projectRow",

$(".projectRow").live("click", function (e) {
 var rowId = $(this).attr("id");
 loadPopupDialog(rowId);
});

проблема в том, что иногда содержимое в ячейке в таблице содержит гиперссылку HTML. Если вы нажмете на ссылку, я хочу "уважать" ссылку и НЕ всплывать диалоговое окно. Прямо сейчас, если у меня есть ссылка внутри ячейки, которая открывает URL-адрес на другой вкладке, например:

<a href="http://www.microsoft.com" target="_blank">Project</a>

новая вкладка открывается правильно, но когда я вернусь к первой вкладке, откроется диалоговое окно jQuery ui.

Как я могу предотвратить loadPopupDialog() когда я loadPopupDialog() внутри строки, но на прямой ссылке html?

1 ответ

Вы можете предотвратить пузырение события click с помощью

$(".projectRow a").click(function(e) {
 e.stopPropagation();
})

Это позволит тегу A щелкнуть, но не базовый родитель. Однако, если кто-то нажимает на div, а не на путь, диалог будет всплывать.

Здесь JSFiddle я создал (http://jsfiddle.net/twXU7/), используя.click() вместо.live(), но все же работает.

licensed under cc by-sa 3.0 with attribution.