Отмена события действующего на строку таблицы при клике на определенной ячейке?
Прошу прощения если не очень грамотно сформулировал вопрос. Суть в следующем — на строки таблицы повешена определённая функция
<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, время: 12:50. |