onclick - пересечение событий.
Есть таблица состоящая из большого числа строк, при клике на строку срабатывает функция изменяющая цвет ее фона.
Проблема в том что если в строке есть гипперссылка, открывающая изображение в отдельном окне, то при клике по ней, помимо открытия окна с картинкой, строка помечается. Как избежать срабатывания события onclick, при нажатии на активные элементы внутри? <tr id='1' onclick="lineon('1');"> <td><a href='../media//den.jpg' target="_blank">den.jpg</a></td> <td>10.03.2011|<b>12:36</b></td> </tr> |
var target = event.target || event.srcElement; if (target != this) return; Добавить в onclick строки таблицы в начало. |
Сделал. Все работает так же.
<tr id='1' onclick="var target = event.target || event.srcElement; if(target != this) return lineon('1');"> |
Как же сделать-то? Может перебить событие в строке другим событием в ячейке со ссылкой?
|
можно сделать костыль:)
при клике по ссылки возвращать таблице те стили что по дефолту:) только проверьте дебагером, что происходит раньше клик по ссылке или изменение цвета у таблицы |
Да, ну нафиг. Проще вообще тогда не делать выделение при клике :)
|
Цитата:
Копируй мой код полностью. Должно быть return; lineon() — т. е. return прерывает выполнение функции, записанной в onclick и lineon уже не вызывается. |
Пробовал и так - код вообще перестает работать.
|
Кликни сначала по ссылке, а потом по блоку.
<html> <body> <div style='background: #CCCCCC; width: 200px; height: 200px' onclick='var target = event.target || events.srcElement; if (event.target != this) return; this.style.backgroundColor = "red";'> <a href='javascript://'> Click </a> </div> </body> </html> |
Ага, это работает, но только с div-ом, а не с <tr> :)
|
Часовой пояс GMT +3, время: 09:18. |