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

Проблема с меню аккордеон
Добрый день!

Я делаю сайт на Modx.
Но проблема у меня как раз в меню, а именно с javascript кодом аккордеон меню.
Изначально я брала пример двохуровневого меню и пыталась переделать на трьохуровневый.
Но возникла проблема.
Само меню выглядит так - "problema-menu.jpg" (картинка во вложении).
При нажатии на элемент меню нижнего уровня - на "FAAC 740", например, мое меню сворачивается до верхнего уровня (картинка "problema-menu-1.jpg" во вложении).
Видимо что-то в коде не дописано. Но где и как, я не знаю.

Как мне сделать, чтобы при нажатии на третий уровень меню, само
меню оставалось открытым на нужном уровне.

Некоторые данные:
1) Для создания меню используется css документы и два js документа.
Один - jquery-1.5.2.min.js (подключен к сайту).
Второй - scriptbreaker-multiple-accordion-1.js (с ним и проблемы).
2) Вот код scriptbreaker-multiple-accordion-1.js:
/*
 * jQuery UI Multilevel Accordion v.1
 * 
 * Copyright (c) 2011 Pieter Pareit
 *
 * [url]http://www.scriptbreaker.com[/url]
 *
 */

//plugin definition
(function($){
    $.fn.extend({

    //pass the options variable to the function
    accordion: function(options) {
        
		var defaults = {
			accordion: 'true',
		/*	speed: 300,
			closedSign: '[+]',
			openedSign: '[-]'*/
		};

		// Extend our default options with those provided.
		var opts = $.extend(defaults, options);
		//Assign current element to variable, in this case is UL element
 		var $this = $(this);
 		
 		//add a mark [+] to a multilevel menu
 		$this.find("li").each(function() {
 			if($(this).find("ul").size() != 0){
 				//add the multilevel sign next to the link
 				$(this).find("a:first").append("<span>"+ opts.closedSign +"</span>");
 				
 				//avoid jumping to the top of the page when the href is an #
 				if($(this).find("a:first").attr('href') == "#"){
 		  			$(this).find("a:first").click(function(){return false;});
 		  		}
 			}
 		});

 		//open active level
 		$this.find("li.active").each(function() {
 			$(this).parents("ul");
 			$(this).parents("ul").parent("li").find("span:first").html(opts.closedSign);
 		});

  		$this.find("li a").click(function() {
  			if($(this).parent().find("ul").size() != 0){
  				if(opts.accordion){
  					//Do nothing when the list is open
  					if(!$(this).parent().find("ul").is(':visible')){
  						parents = $(this).parent().parents("ul");
  						visible = $this.find("ul:visible");
  						visible.each(function(visibleIndex){
  							var close = true;
  							parents.each(function(parentIndex){
  								if(parents[parentIndex] == visible[visibleIndex]){
  									close = false;
  									return false;
  								}
  							});
  							if(close){
  								if($(this).parent().find("ul") != visible[visibleIndex]){
  									$(visible[visibleIndex]).slideUp(opts.speed, function(){
  										$(this).parent("li").find("span:first").html(opts.openedSign);
  									});
  									
  								}
  							}
  						});
  					}
  				}
  				if($(this).parent().find("ul:first").is(":visible")){
  					$(this).parent().find("ul:first").slideUp(opts.speed, function(){
  						$(this).parent("li").find("span:first").delay(opts.speed).html(opts.closedSign);
  					});
  					
  					
  				}else{
  					$(this).parent().find("ul:first").slideDown(opts.speed, function(){
  						$(this).parent("li").find("span:first").delay(opts.speed).html(opts.openedSign);
  					});
  				}
  			}
  		});
    }
});
})(jQuery);

3) Сейчас сайт на локалке.


Прошу помочь новичку.
Очень нужно срочно решить эту проблему.


P.S. Ответа на форуме я не нашла. Если есть ответ прошу переадресовать.

Спасибо.
Изображения:
Тип файла: jpg problema-menu.jpg (16.2 Кб, 11 просмотров)
Тип файла: jpg problema-menu-2.jpg (75.2 Кб, 7 просмотров)
Ответить с цитированием