Отмена события действующего на строку таблицы при клике на определенной ячейке?
Прошу прощения если не очень грамотно сформулировал вопрос. Суть в следующем — на строки таблицы повешена определённая функция
<tr onclick=.... и т.д> <td><a href=...>...</a></td> <td>...</td> ... </tr> понятно, что функция срабатывает при клике в любой области строки, а вот как сделать чтобы, например, при щелчке в ячейке, где размещена ссылка, функция не срабатывала? |
при клике по ссылке или при клике по ячайке внутри которой ссылка?
|
При клике на ячейке в которой ссылка (включая и ссылку, конечно).
|
как вариант, добавьте в начало функции(-й), повешенной(-ых) на строки таблицы, что-то типа такого
function click_tr(e) { if (typeof(e.target.href) != "undefined") { return true; } //остальной код функции } |
Нужно повесить ещё обработчик на ячейку, содержащую ссылку, и в нём вызвать event.stopPropagation();
|
Цитата:
|
вот так
<!DOCTYPE HTML> <html> <head> <style> td{ width:50px; height:50px; border:1px solid black; } </style> </head> <body> <table id='tb'> <tr><td>1</td></tr> <tr><td>2</td></tr> <tr><td><a href='#'> 3</a></td></tr> <tr><td>4</td></tr> </table> <script> document.getElementById('tb').onclick = function (e){ var target = e&&e.target || event.srcElement; if(target.tagName == 'TD'){ search(target) } else if(target.tagName == 'A')alert('link'); return false; } function search(elem){ var tags = elem.getElementsByTagName('a'); if(tags.length)return; alert('ссылок нет'); } </script> </body> </html> |
Цитата:
|
Ого, сколько вариантов! Сейчас буду все пробовать, спасибо всем за помощь. Отпишусь обязательно!
|
<style> td { border: solid 1px; cursor: pointer; padding: 1em; } </style> <table id="table"> <tr> <td>нет ссылки</td> <td><a href="#">ссылка</a></td> <td>нет ссылки</td> </tr> <tr> <td>нет ссылки</td> <td><a href="#">ссылка</a></td> <td>нет ссылки</td> </tr> <table> <script> window.onload = function () { var table = document.getElementById('table'); table.onclick = function (e) { e = e || event; var target = e.target || e.srcElement; if (target.parentNode.tagName == 'TR') { if (target.innerHTML.search('href') == -1) { alert('здесь ссылки нет') } else { alert('ячейка со ссылкой') } } else if (target.tagName == 'A') { alert('ссылка') } } } </script> |
Часовой пояс GMT +3, время: 13:32. |