jquery - 单击其他活动菜单后如何使手风琴菜单向上滑动?
问题描述
slideUp
单击另一个菜单(活动)后,如何制作下拉手风琴菜单?
jQuery(document).ready(function() {
$("#accordion-menu").vmenuModule({
Speed: 400,
autostart: false,
autohide: true
});
});
(function($) {
$.fn.vmenuModule = function(option) {
var obj, item;
var options = $.extend({
Speed: 220,
autostart: true,
autohide: 1
},
option);
obj = $(this);
item = obj.find("ul").parent("li").children("a");
item.attr("data-option", "off");
item.unbind('click').on("click", function() {
var a = $(this);
if (options.autohide) {
a.parent().parent().find("a[data-option='on']").parent("li").children("ul").slideUp(options.Speed / 1.2,
function() {
$(this).parent("li").children("a").attr("data-option", "off");
$(this).parent("li").removeClass("show");
})
}
if (a.attr("data-option") == "off") {
a.parent("li").children("ul").slideDown(options.Speed,
function() {
a.attr("data-option", "on");
a.parent('li').addClass("show");
});
}
if (a.attr("data-option") == "on") {
a.attr("data-option", "off");
a.parent("li").children("ul").slideUp(options.Speed)
a.parent('li').removeClass("show");
}
});
if (options.autostart) {
obj.find("a").each(function() {
$(this).parent("li").parent("ul").slideDown(options.Speed,
function() {
$(this).parent("li").children("a").attr("data-option", "on");
})
})
} else {
obj.find("a.active").each(function() {
$(this).parent("li").parent("ul").slideDown(options.Speed,
function() {
$(this).parent("li").children("a").attr("data-option", "on");
$(this).parent('li').addClass("show");
})
})
}
}
})(window.jQuery || window.Zepto);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="accordion-menu">
//example of single menu
<li class="dropdown">
<a href="#" class="dropdown-toggle no-arrow">
<span>Dashboard</span>
</a>
</li>
//example of dropdown accordion menu
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle">
<span>Admin Panel</span>
</a>
<ul class="submenu">
<li><a href="#manageuser">Manage User</a></li>
</ul>
<ul class="submenu">
<li><a href="#announcement">Announcement</a></li>
</ul>
</li>
</ul>
解决方案
您需要在此处进行更改
item = obj.find("li").children("a");
在您的代码中,您正在寻找item = obj.find("ul").parent("li").children("a");
具有子菜单的元素。
希望这会帮助你。
jQuery(document).ready(function(){
$("#accordion-menu").vmenuModule({
Speed: 400,
autostart: false,
autohide: true
});
});
(function($) {
$.fn.vmenuModule = function(option) {
var obj, item;
var options = $.extend({
Speed: 220,
autostart: true,
autohide: 1
},
option);
obj = $(this);
item = obj.find("li").children("a");
item.attr("data-option", "off");
item.unbind('click').on("click", function() {
var a = $(this);
if (options.autohide) {
a.parent().parent().find("a[data-option='on']").parent("li").children("ul").slideUp(options.Speed / 1.2,
function() {
$(this).parent("li").children("a").attr("data-option", "off");
$(this).parent("li").removeClass("show");
})
}
if (a.attr("data-option") == "off") {
a.parent("li").children("ul").slideDown(options.Speed,
function() {
a.attr("data-option", "on");
a.parent('li').addClass("show");
});
}
if (a.attr("data-option") == "on") {
a.attr("data-option", "off");
a.parent("li").children("ul").slideUp(options.Speed)
a.parent('li').removeClass("show");
}
});
if (options.autostart) {
obj.find("a").each(function() {
$(this).parent("li").parent("ul").slideDown(options.Speed,
function() {
$(this).parent("li").children("a").attr("data-option", "on");
})
})
}
else{
obj.find("a.active").each(function() {
$(this).parent("li").parent("ul").slideDown(options.Speed,
function() {
$(this).parent("li").children("a").attr("data-option", "on");
$(this).parent('li').addClass("show");
})
})
}
}
})(window.jQuery || window.Zepto);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="accordion-menu">
//example of single menu
<li class="dropdown">
<a href="#" class="dropdown-toggle no-arrow">
<span>Dashboard</span>
</a>
</li>
//example of dropdown accordion menu
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle">
<span>Admin Panel</span>
</a>
<ul class="submenu">
<li><a href="#manageuser">Manage User</a></li>
</ul>
<ul class="submenu">
<li><a href="#announcement">Announcement</a></li>
</ul>
</li>
</ul>
推荐阅读
- sql-loader - 清除数据然后加载数据
- asp.net-mvc - CheckBoxFor - 想要在选中时返回 false,在未选中时返回 true
- dynamic - 尝试动态构建时错误的组查询
- ios - 使用“后滑动”iOS 12 时,UISearchBar 从 UINavigationBar 消失
- html - 如何从名称中带有变量的选择框中进行选择?
- python - 使用 Flask-Migrate 在多个分支上工作
- wpf - 将任何旧的 WPF 几何转换为 PathFigureCollection?
- c# - EntityFrameworkCore - 将 DbSet 过滤到另一个实体上的单个属性
- powershell - 测试路径总是返回 False
- pytorch - 如何在 PyTorch 中为非图像数据创建小批量?