Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   cancelBubble родительского дива (https://javascript.ru/forum/events/25373-cancelbubble-roditelskogo-diva.html)

platitude 03.02.2012 06:41

cancelBubble родительского дива
 
Имеется:
<div id="father" onmousedown="f1(event); return false;">
<div id="son" onclick="f2(1)">text<div><div id="son" onclick="f2(2)">text<div><div id="son" onclick="f2(3)">text<div>
</div>

Функция "f1" использует onmousemove для скроллинга.
Требуется запретить "onclick" для элементов "son", если клик произошёл после выполнения этой функции, а не после клика на элементе. Что можно сделать?

Пробовал <body onclick="return false;"> тогда клик на элементах son не выполняется. Совсем запутался, буду благодарен за любую помощь в решении задачи, спасибо =)

Pavel M. 03.02.2012 09:33

почитайте для начала про ID элемента, он должен быть уникальный http://htmlbook.ru/html/attr/id

platitude 03.02.2012 09:37

в данном случае это не играет роли, проблема заключается в клике в области "father" и как следствие срабатывание дочерних событий

melky 03.02.2012 10:15

создайте глобальную переменную.

в функции f1 изменяйте её на true в начале действия, и на false в конце.

в функции f2 проверяйте, не равна ли глобальная переменная true.

platitude 03.02.2012 10:21

как создать глобальную переменную для двух разных функций в подключаемом файле .js?

melky 03.02.2012 10:23

Вы не имеете доступа к функциям ?

platitude 03.02.2012 10:27

доступ имею, я около месяца только изучаю JavaScript =)

melky 03.02.2012 10:31

Тогда будет лучше, если Вы прочитаете эту статью : Внутренние механизмы работы переменных, замыкания

platitude 03.02.2012 10:35

melky, спасибо за помощь, сейчас прочту и попробую последовать вашему совету =)

platitude 03.02.2012 11:03

melky, попробовал в начало файла добавить:
var complete;
в начале f1 добавил:
complete=false;
в конце, перед "return false;", добавил:
complete=true;

не помогло, клик всё равно происходит, зада сводится к разделению кликов по происхождению я так понимаю =) как это осуществить?


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