У меня есть меню, в котором некоторые элементы скользят вверх и переключаются. Итак, если фрукт открыт, и я нажимаю на овощи, он открывается, а фрукты закрываются. Все работает нормально. «Закуски» не имеют подменю, но я хочу, чтобы оно вело себя так же, как два других. Поэтому, если я нажму на закуски и открыты любые другие подменю, они закроются с тем же эффектом слайда.
На данный момент он у меня включен (медленно), но он скрывает элементы по горизонтали, а не со скольжением вверх / вниз.
Кто-нибудь может помочь?
http://jsfiddle.net/Alga/H3Y4Q/2/
$ ('. fruit_submenu'). hide (); $ ('. veg_submenu'). скрыть ();
$ ('li # fruit'). click (function () {$ (". fruit_submenu"). slideToggle (); $ ('. veg_submenu'). slideUp ();});
$ ('li # veg'). click (function () {
$(".veg_submenu").slideToggle(); $('.fruit_submenu').slideUp();
});
$ ('li # snacks'). click (function () {
$('.fruit_submenu').hide('slow');
});
2 ответа
Способ переключения не идеален, и вы можете избежать необходимости указывать, какие элементы открывать / закрывать, если вы перебираете все элементы li при каждом щелчке. Это также упростило бы расширение в будущем.
Тем не менее ... быстрый ответ на ваш вопрос ниже:
$('.fruit_submenu').hide();
$('.veg_submenu').hide();
$('li#fruit').click(function () {
$(".fruit_submenu").slideToggle();
$('.veg_submenu').slideUp();
});
$('li#veg').click(function () {
$(".veg_submenu").slideToggle();
$('.fruit_submenu').slideUp();
});
$('li#snacks').click(function () {
//force the other elements to slide up no matter their state.
$('.fruit_submenu').slideUp();
$('.veg_submenu').slideUp();
});
Сначала исправьте разметку, так как она недействительна
<ul class="menu">
<li id="fruit">Fruit
<ul class="fruit_submenu">
<li>Apples</li>
<li>Bananas</li>
<li>Pears</li>
</ul>
</li>
<li id="snacks"><a href="#">Snacks</a>
</li>
<li id="veg">Vegetables
<ul class="veg_submenu">
<li>Beans</li>
<li>Spinach</li>
</ul>
</li>
</ul>
Ты можешь просто сделать
$('.menu [class$="_submenu"]').hide();
$('.menu li').on('click', function () {
$(this).siblings('li').find('ul').slideUp();
$('[class$="_submenu"]', this).slideToggle();
});
Похожие вопросы
Новые вопросы
jquery
jQuery - это библиотека JavaScript, рассмотрите возможность добавления тега JavaScript. jQuery - это популярная кросс-браузерная библиотека JavaScript, которая облегчает прохождение Document Object Model (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться в рассматриваемом коде, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.