вопрос по 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; Может есть более действенный способ? |
вроде можно воспользоваться объектом event.stopPropagation();
но она работает примерно так $(document).click( function(event){ if( $(event.target).closest("p").length ) return; event.stopPropagation(); }); Можно ли его передать в функцию заранее определенную? например $(document).on('change', '.selector_type',show_dop_block(event)); не работает :( |
stopPropagation();
видимо нужно делать в функции select_dop_punkt и до return; |
stopPropagation(); как и target не кросбраузерно
|
зато есть аналоги сancelBubble и srcElement для IE
Event в IE-глобальный, т.е. window.event |
Цитата:
поэтому http://api.jquery.com/event.stopPropagation/ кроссбраузерно |
Часовой пояс GMT +3, время: 14:47. |