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

Небольшой вопрос по jquery
Добрый день.
Есть код
function cl_open_folder(){
		$(this).next().stop(true,true).slideDown(200);
		if ($(this).hasClass("first_fold")) {
			$(this).find(".cl_img_fol").css("background-position","-20px 0px"); 
			}
			else{
				$(this).find(".cl_img_fol").css("background-position","-20px -18px"); 
			}
		
		$(this).toggleClass("close_folder open_folder");
		}
		
function cl_close_folder(){
	//alert("fdf");
	$(this).next().stop(true,true).slideUp(200);
	if ($(this).hasClass("first_fold")) {
			$(this).find(".cl_img_fol").css("background-position","0px 0px"); 
			}
			else{
				$(this).find(".cl_img_fol").css("background-position","0px -18px"); 
			}
		
		$(this).toggleClass("close_folder open_folder");
	}

$(document).ready(function() {
	$('.close_folder').on("click",cl_open_folder);
	$('.open_folder').on("click",cl_close_folder);
});

При клике на закрытую папку, запускается функция cl_open_folder, после ее выполнения класс объекта меняется на open_folder вместо close_folder. Но 2-й обработчик событий уже не срабатывает при клике на open_folder, вместо этого срабатывает повторно первый. Если вконце функции cl_open_folder дописываю $('.open_folder').on("click",cl_close_folder);, то обработчики начинают включаться одновременно.
Как этого можно избежать? вроде метод on, должен включать в себя live.
Ответить с цитированием