Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   onclick - пересечение событий. (https://javascript.ru/forum/dom-window/15848-onclick-peresechenie-sobytijj.html)

LRCenter 16.03.2011 09:39

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>

Matre 16.03.2011 09:59

var target = event.target || event.srcElement;
if (target != this) return;


Добавить в onclick строки таблицы в начало.

LRCenter 16.03.2011 10:14

Сделал. Все работает так же.

<tr id='1' onclick="var target = event.target || event.srcElement; if(target != this) return lineon('1');">

LRCenter 16.03.2011 11:10

Как же сделать-то? Может перебить событие в строке другим событием в ячейке со ссылкой?

розовый слоник 16.03.2011 11:46

можно сделать костыль:)
при клике по ссылки возвращать таблице те стили что по дефолту:)
только проверьте дебагером, что происходит раньше клик по ссылке или изменение цвета у таблицы

LRCenter 16.03.2011 12:37

Да, ну нафиг. Проще вообще тогда не делать выделение при клике :)

Matre 16.03.2011 13:04

Цитата:

Сделал. Все работает так же.
Ты не поставил точку с запятой.
Копируй мой код полностью.
Должно быть return; lineon() — т. е. return прерывает выполнение функции, записанной в onclick и lineon уже не вызывается.

LRCenter 16.03.2011 13:29

Пробовал и так - код вообще перестает работать.

Matre 16.03.2011 13:51

Кликни сначала по ссылке, а потом по блоку.

<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>

LRCenter 16.03.2011 14:05

Ага, это работает, но только с div-ом, а не с <tr> :)


Часовой пояс GMT +3, время: 09:18.