Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2012, 08:41
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

вопрос по jquery. Одновременно выполняющиеся события. как запретить одно?
Есть обработчики события
$(document).on('change', '.selector_detail_type',select_dop_punkt);
$(document).on('click', hide_block);

выделяет пункт
function select_dop_punkt()
{
....
}

Скрывает весь блок с пунктами
function hide_block()
{
$('.title_main').hide();
}

Проблема в том, что при клике на пункте сразу запускается 2 обработчика. Один выбирает пункт, другой закрывает весь блок. А нужно чтобы второй обработчик, проверил был ли нажат первый пункт и если был, то останавливал свое выполнение.
Единственный вариант - это сеттаймауты и ввод дополнительных переменнных типа dont_hide=true;
Может есть более действенный способ?
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2012, 09:15
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

вроде можно воспользоваться объектом event.stopPropagation();
но она работает примерно так

$(document).click( function(event){
if( $(event.target).closest("p").length )
return;
event.stopPropagation();
});

Можно ли его передать в функцию заранее определенную?
например
$(document).on('change', '.selector_type',show_dop_block(event));
не работает
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2012, 19:15
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 804

stopPropagation();
видимо нужно делать в функции select_dop_punkt
и до return;
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2012, 14:05
Аспирант
Отправить личное сообщение для Keeper Посмотреть профиль Найти все сообщения от Keeper
 
Регистрация: 28.04.2011
Сообщений: 73

stopPropagation(); как и target не кросбраузерно
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2012, 14:09
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

зато есть аналоги сancelBubble и srcElement для IE
Event в IE-глобальный, т.е. window.event
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2012, 14:27
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 804

Сообщение от Keeper
stopPropagation(); как и target не кросбраузерно
из первого сообщения темы, видно, что речь идет о Jquery
поэтому http://api.jquery.com/event.stopPropagation/ кроссбраузерно
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по jquery - как узнать какой тэг? APL Общие вопросы Javascript 7 09.06.2016 15:22
.load() - как в загруженном содержимом использовать jquery? rbooz jQuery 14 25.05.2010 11:03
События Jquery и не только Tohin Events/DOM/Window 3 21.08.2009 13:57
Как правильно подгрузить jQuery Siton jQuery 4 15.06.2009 08:54
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 18:14