LINUX.ORG.RU

[javascript] Как временно запретить событие onclick дочернего элемента?

 


0

0

Я хочу сделать на форме контекстную помощь. Для этого в html добавляю

<div class='helper'><a href='#'  id='helper'>Контекстная помощь</a></div>
а скриптом при загрузке страницы делаю:
$('helper').onclick = startHelp;
Соответственно, функции:
function startHelp(evt){
        evt.stopPropagation();
        evt.preventDefault();
        document.body.style.cursor = "help";
        setTimeout(function(){document.body.onclick = Help;}, 30);
}

function Help(evt){
        evt.stopPropagation();
        evt.preventDefault();
        document.body.onclick = '';
        document.body.style.cursor = "default";
        showHelp(evt.target.id);
}
Но вот в чем беда: stopPropagation() почему-то не работает (firefox 3.5.5). startHelp сразу вызывает функцию Help, но это я решил введением таймаута. А вот в Help помимо самой функции showHelp еще и вызывается обработчик onclick того элемента, по которому я щелкнул.

Как можно решить эту проблему? Может быть, я что-то делаю не так? Или придется делать обработчик onmouseover/onmouseout, который будет при наведении мыши на элемент отменять его onclick, а при отводе - восстанавливать?

☆☆☆☆☆

Ответ на: комментарий от Deleted

>Например?

$(this).slideToggle();

ORLY? Оно работает и так, враппер там совсем небольшой.


Firefox.

Шо? Работало всю жисть.


Internet Explorer.

Именно что да. Хотя зависит от запросов. Если нужны селекторы, то в IE6, конечно, таких нет.


Ну, селекторов вообще нигде нет, кроме сабжа.

Zhid
()
Ответ на: комментарий от Zhid

>$(this).slideToggle();

И в чём тут, собственно, проблема? Если будет CSS анимация, то JS схлопнется только в проверку для toggle.

Firefox.

Internet Explorer.



?

Ну, селекторов вообще нигде нет, кроме сабжа.


querySelector() и querySelectorAll(). Поддерживаются в Firefox 3.1+, IE8+ (только в стандартном режиме IE8) и др.

Deleted
()
Ответ на: комментарий от Deleted

>то JS схлопнется только в проверку для toggle.

Хотя может вру, не помню точно, можно ли будет там просто так это сделать. Надо прочитать портянку по transitions и/или transformation, а лень…

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.