我想用这个插件实现手风琴效果。默认情况下,它用作切换。当我单击另一个 1 级菜单时,我需要折叠打开的菜单。
我的结构是:
- 一级锚
一级锚
- 2级锚
- 3级锚
- 3级锚
- 3级锚
- 2级锚
- 2级锚
一级锚
- 一级锚
当我点击另一个子菜单时,我需要关闭所有打开的 1 级子菜单。有人可以帮我吗?
非常感谢你。
我正在使用这个插件 - https://raw.github.com/ComputerWolf/SlickNav/master/jquery.slicknav.js
我想用这个插件实现手风琴效果。默认情况下,它用作切换。当我单击另一个 1 级菜单时,我需要折叠打开的菜单。
我的结构是:
一级锚
一级锚
当我点击另一个子菜单时,我需要关闭所有打开的 1 级子菜单。有人可以帮我吗?
非常感谢你。
我正在使用这个插件 - https://raw.github.com/ComputerWolf/SlickNav/master/jquery.slicknav.js
这似乎有效
$('#menu').slicknav({
'open': function(trigger){
var that = trigger.parent().children('ul');
$('.slicknav_menu ul li.slicknav_open ul').each(function(){
if($(this).get( 0 ) != that.get( 0 )){
$(this).slideUp().addClass('slicknav_hidden');
$(this).parent().removeClass('slicknav_open').addClass('slicknav_collapsed');
}
})
},
});
我想要相同的功能,但接受的答案不足。除此之外,如果您有多个级别的菜单,它就不起作用。我修改了源代码中的Plugin.prototype._itemClick函数以更好地处理这个问题。我永远不会希望在同一级别打开多个菜单,但您可以添加一个设置选项来绕过我注入的代码。如果您添加了一个,此修改还将确保您的关闭处理程序被触发。我评论了我添加的代码:
Plugin.prototype._itemClick = function (el) {
var $this = this;
var settings = $this.settings;
var data = el.data('menu');
if (!data) {
data = {};
data.arrow = el.children('.' + prefix + '_arrow');
data.ul = el.next('ul');
data.parent = el.parent();
//Separated parent link structure
if (data.parent.hasClass(prefix + '_parent-link')) {
data.parent = el.parent().parent();
data.ul = el.parent().next('ul');
}
el.data('menu', data);
}
if (data.parent.hasClass(prefix + '_collapsed')) {
// **** Begin custom code ****
data.parent.siblings('.slicknav_open').each(function () {
var $li = $(this);
var $el = $li.children('a');
var $ul = $el.next('ul');
$el.children('.' + prefix + '_arrow').html(settings.closedSymbol);
$li.addClass(prefix + '_collapsed').addClass(prefix + '_animating').removeClass(prefix + '_open');
$this._visibilityToggle($ul, $li, true, $el);
});
// **** End custom code ****
data.arrow.html(settings.openedSymbol);
data.parent.removeClass(prefix + '_collapsed');
data.parent.addClass(prefix + '_open');
data.parent.addClass(prefix + '_animating');
$this._visibilityToggle(data.ul, data.parent, true, el);
} else {
data.arrow.html(settings.closedSymbol);
data.parent.addClass(prefix + '_collapsed');
data.parent.removeClass(prefix + '_open');
data.parent.addClass(prefix + '_animating');
$this._visibilityToggle(data.ul, data.parent, true, el);
}
};
我希望这可以帮助其他需要此功能的人。