Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2015, 10:23
Интересующийся
Отправить личное сообщение для solunski.d Посмотреть профиль Найти все сообщения от solunski.d
 
Регистрация: 19.08.2015
Сообщений: 24

Многоуровневое меню, не срабатывает правильно анимация
Доброе утро, сложилась такая проблема, я не могу привязать нормальную анимацию к выподающему списку.

Вот ссылочка на JSFiddle

В коде JS щелкая на кнопку DropDown 1 выводиться вложенный список, щелкнув на DropDown 2 выводиться еще список, через функцию slideToggle. Но при щелчке на Dropdown 2 выкатывается сама конпка и вложенный список в нее, как исправить?

Если не понятно о чем я говорю, то зайдите на ссылку где я выложил полный исходник, щелкните на кнопку Dropdown 1, затем Dropdown 2


Код HTML
<ul class="nav">
	<li class="button-dropdown"><!-- Первый уровень -->
		<a href="javascript:void(0)" class="dropdown-toggle">Dropdown 1 <span>▼</span></a>
		<ul class="dropdown-menu">
			<li>
				<a href="#">Drop Item 1</a>
			</li>
			<li>
				<a href="#">Drop Item 2</a>
			</li>
			<li class="button-dropdown"><!-- Второй уровень -->
				<a href="javascript:void(0)" class="dropdown-toggle">Dropdown 2 <span>▼</span></a>
				<ul class="dropdown-menu">
					<li>
						<a href="#">asdf</a>
					</li>
				</ul>
			</li>
		</ul>
	</li>
</ul>


Полный код JS

jQuery(document).ready(function (e) {
    function t(t) {
        e(t).bind("click", function (t) {
            t.preventDefault();
            e(this).parent().fadeOut()
        })
    }
    e(".dropdown-toggle").click(function () {
        var t = e(this).parents(".button-dropdown").children(".dropdown-menu").is(":hidden");
        e(".button-dropdown .dropdown-menu").hide();
        e(".button-dropdown .dropdown-toggle").removeClass("active");
        if (t) {
            // Тут проблема, slideToggle(300).
            e(this).parents(".button-dropdown").children(".dropdown-menu").slideToggle(300).parents(".button-dropdown").children(".dropdown-toggle").addClass("active")
        }

    });
    e(document).bind("click", function (t) {
        var n = e(t.target);
        if (!n.parents().hasClass("button-dropdown")) e(".button-dropdown .dropdown-menu").hide();
    });
    e(document).bind("click", function (t) {
        var n = e(t.target);
        if (!n.parents().hasClass("button-dropdown")) e(".button-dropdown .dropdown-toggle").removeClass("active");
    })
});


Проблемный участок кода
e(".dropdown-toggle").click(function () {
        var t = e(this).parents(".button-dropdown").children(".dropdown-menu").is(":hidden");
        e(".button-dropdown .dropdown-menu").hide();
        e(".button-dropdown .dropdown-toggle").removeClass("active");
        if (t) {
            // ***************************************************** Тут проблема, slideToggle(300).
            e(this).parents(".button-dropdown").children(".dropdown-menu").slideToggle(300).parents(".button-dropdown").children(".dropdown-toggle").addClass("active")
        }

    });

Последний раз редактировалось solunski.d, 26.08.2015 в 14:48.
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2015, 13:40
Интересующийся
Отправить личное сообщение для solunski.d Посмотреть профиль Найти все сообщения от solunski.d
 
Регистрация: 19.08.2015
Сообщений: 24

Неужели ни кто не знает
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2015, 13:44
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Вы опубликовали очень много кода.

Пожалуйста, локализуйте проблему!

Выделите фрагмент кода, по которому есть вопрос и опубликуйте его отдельно.

И, по возможности, уберите из кода мусор, чтобы нам легче было сориентироваться и помочь решить вашу проблему.

Спасибо.

P.S. код форматируют специальные теги [ js ] ... [/js], [ html ] ... [/html] и другие аналогичные, сам. http://javascript.ru/formatting
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2015, 13:45
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

solunski.d,
Напишите проще что вам нужно.
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2015, 14:03
Интересующийся
Отправить личное сообщение для solunski.d Посмотреть профиль Найти все сообщения от solunski.d
 
Регистрация: 19.08.2015
Сообщений: 24

Вот посмотрите, потятно я теперь изложил или нет)
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2015, 14:11
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

solunski.d,
попробуйте вместо parents использовать closest
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2015, 14:29
Интересующийся
Отправить личное сообщение для solunski.d Посмотреть профиль Найти все сообщения от solunski.d
 
Регистрация: 19.08.2015
Сообщений: 24

closet он закрывает
Ответить с цитированием
  #8 (permalink)  
Старый 26.08.2015, 17:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

solunski.d,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 body {
    background-color: #eee;
    text-align: center;
    padding-top: 50px;
}

.nav {
    display: block;
    font: 13px Helvetica, Tahoma, serif;
    text-transform: uppercase;
    margin: 0;
    padding: 0;
}

.nav li {
    display: inline-block;
    list-style: none;
}

.nav .button-dropdown {
    position: relative;
}

.nav li a {
    display: block;
    color: #333;
    background-color: #fff;
    padding: 10px 20px;
    text-decoration: none;
}

.nav li a span {
    display: inline-block;
    margin-left: 5px;
    font-size: 10px;
    color: #999;
}

.nav li a:hover, .nav li a.dropdown-toggle.active {
    background-color: #289dcc;
    color: #fff;
}

.nav li a:hover span, .nav li a.dropdown-toggle.active span {
    color: #fff;
}

.nav li .dropdown-menu {
    position: absolute;
    left: 0;
    padding: 0;
    margin: 0;
    margin-top: 3px;
    text-align: left;
}

.nav li .dropdown-menu.active {
    display: block;
}

.nav li .dropdown-menu a {
    width: 150px;
}
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
  jQuery(function() {
    function e(a, c) {
        var b = c ? ":hidden:first" : ":visible:last",
            d = c ? "fadeIn" : "fadeOut",
            b = a.stop().filter(b);
        b.length && b.delay(100)[d](500, function() {
            e(a, c)
        })
    }
    $(".dropdown-menu").each(function(a, c) {
        var b = $("> li", c);
        b.hide();
        var d = $(this).prev(),
            f = $(this).parent();
        d.click(function(a) {
            a.preventDefault();
            f.siblings().find("a.active").click();
            d.toggleClass("active");
            e(b, d.is(".active"))
        })
    });
    $("html").click(function(a) {
        $(a.target).closest(".dropdown-menu,.dropdown-toggle").length || $(".dropdown-toggle.active").click()
    })
});

  </script>
</head>

<body>  <ul class="nav">
	<li>
		<a href="#">
			No dropdown
		</a>
	</li>
	<li class="button-dropdown">
		<a href="javascript:void(0)" class="dropdown-toggle">
			Dropdown 1 <span>▼</span>
		</a>
		<ul class="dropdown-menu">
			<li>
				<a href="#">
					Drop Item 1
				</a>
			</li>
			<li>
				<a href="#">
					Drop Item 2
				</a>
			</li>
			<li class="button-dropdown">
				<a href="javascript:void(0)" class="dropdown-toggle">
					Dropdown 2 <span>▼</span>
				</a>
				<ul class="dropdown-menu">
					<li>
						<a href="#">
							asdf
						</a>
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<a href="#">
			No dropdown
		</a>
	</li>
	<li class="button-dropdown">
		<a href="javascript:void(0)" class="dropdown-toggle">
			Dropdown 2 <span>▼</span>
		</a>
		<ul class="dropdown-menu">
			<li>
				<a href="#">
					asdf
				</a>
			</li>
		</ul>
	</li>
</ul>



</body>

</html>
Ответить с цитированием
  #9 (permalink)  
Старый 26.08.2015, 17:52
Интересующийся
Отправить личное сообщение для solunski.d Посмотреть профиль Найти все сообщения от solunski.d
 
Регистрация: 19.08.2015
Сообщений: 24

премного благодарен, большое спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 26.08.2015, 17:58
Интересующийся
Отправить личное сообщение для solunski.d Посмотреть профиль Найти все сообщения от solunski.d
 
Регистрация: 19.08.2015
Сообщений: 24

премного благодарен, большое спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Захлопывающее многоуровневое меню kosty@ jQuery 0 11.03.2015 14:04
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
анимация активного пункта меню rustleofstars Элементы интерфейса 0 27.04.2013 17:56
Многоуровневое вертикальное меню chuser jQuery 0 13.05.2012 23:56
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36