Показать сообщение отдельно
  #1 (permalink)  
Старый 07.02.2013, 22:25
Новичок на форуме
Отправить личное сообщение для SergeyZhuk Посмотреть профиль Найти все сообщения от SergeyZhuk
 
Регистрация: 07.02.2013
Сообщений: 7

Помогите найти ошибку в скрипте
Приветствую форумчане, имеется сайт на котором создано динамическое меню. Сайт написан человеком, которого уже давно след простыл и соответственно что от куда растет понять уже крайне сложно, но не суть. В один прекрасный момент в "кишках" сайта покопался один умелец, после чего меню стало себя неадекватно вести. Собственно не посчитайте за рекламу, ссылка страницы где это меню вот (меню слева) http://service-group.spb.ru/catalog. Скрипт отвечающий за динамику меню (я так понимаю - это он) вот
define(["jquery", "plugins/busy/busy.jquery"], function(jquery){
	
	// ID of the current catalog
	var catalogId = false;
	
	function loadProducts(_catalogId, page){
		// summary:
		//		Sends ajax request and loads products to productList HTML Element
		var productList = jquery("#productList");
		
		productList.parent().busy();
		
		jquery.ajax({
			url : "/products/" + _catalogId + "/" + (page||0),
			cache : false
		}).then(function(data){
			catalogId = _catalogId;
			productList.html(data);
			productList.parent().busy('hide');
		});
	}
	
	return function(){
		// Binds catalog menu open / close events
		$("#catalogMenu").on("click", "li", function(){
			var $this = jquery(this),
				opened = $this.data("opened");
				
			if($this.attr('data-level') == 0){
				var el = $this.siblings("[data-level=0]").filter('[data-opened]');
				el.nextUntil("[data-level=" + $this.attr("data-level")+ "]").hide("fast").end().removeData("opened").removeAttr('data-opened');
			}
			
			if(opened){
				$this.nextUntil("[data-level=" + $this.attr("data-level")+ "]").hide("fast").end().removeData("opened").removeAttr('data-opened');
			}else{
				$this.nextAll("[data-parent-id=" + $this.attr("data-id") + "]").show("fast").end().data("opened", true).attr('data-opened', true);
			}
		});
		
		var productList = jquery("#productList"); 
		
		$("#catalogMenu").on("click", "li.no-children", function(){
		    $("html, body").animate({ scrollTop: 0 }, "slow");
			loadProducts(jquery(this).attr('data-id'));
		});
		
		productList.on("click", "ul.paging li", function(){
			loadProducts(catalogId, jquery(this).attr('data-page'));
		});
		
		if(window.maykong && (catalogId = window.maykong.catalogId)){
			var $mi = $("#catalogMenu").find("[data-id=" + catalogId + "]"),
				pid = $mi.attr("data-parent-id");
			
			$mi.nextAll("[data-parent-id=" + pid + "]").show().end().prevUntil("[data-level=0]").andSelf().show().end().end().data("opened", true);
			loadProducts(catalogId);
		}
	}
});


При нажатии в меню на категорию, меню должно раздвигаться и там список подкатегорий. Но меню раздвигается и тут же закрывается обратно, в коде вроде все верно, но что случилось ума не прилажу =( Помогите найти этот "гвоздь"

Последний раз редактировалось SergeyZhuk, 08.02.2013 в 00:46.
Ответить с цитированием