Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не отключается обратотчик off() (https://javascript.ru/forum/misc/48309-pochemu-ne-otklyuchaetsya-obratotchik-off.html)

vuler 28.06.2014 22:44

Почему не отключается обратотчик off()
 
Вроде простой код, но работать отказывается.

function three_list_1_hide(event){
		dom=event.target
		if ($(dom).parents('.three_list_1').length==0){
			$('body').off('click',three_list_1_hide);
			$(this).find('.three_list_1').stop().slideUp(function(){ 
				});
		}
		}	
		
	function three_list_1_change(){
		$(this).prev().stop().slideDown(
		function(){ $('body').on('click',three_list_1_hide)}	
	)}
		

$(document).ready(function() {
	$(".three_list_1_show_but").on('click', three_list_1_change);


При клике на кнопку three_list_1_show_but, показывается меню, которое находится в списке выше и по завершению этого показа, создается обработчик, чтобы при клике в любую область отличную от этого меню, оно автоматически скрывалось. На первом этапе все хорошо, но вот при скрытии меню и повторном нажатим на three_list_1_show_but, ничего не происходит, меню появляется и сразу исчезает - $('body').off('click',three_list_1_hide); такое ощущение что не отключился.

рони 28.06.2014 23:00

vuler,

может забыли где поставить отмену всплытия события
или 1 раз повесть на body проверку кликнули вне меню => меню закрыть и не мучатся с off

vuler 28.06.2014 23:10

2-й вариант неприемлем, т.к. не хочется заставлять страницу обрабатывать каждый клик, должно быть только при открытом меню.

рони 28.06.2014 23:16

vuler,
тогда ищите лишнее всплытие


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