最近由于项目需要一个简单的多级下拉菜单菜单但是由于业务和样式上的要求,为了简洁,在网上找了很多导航菜单控件都不大适合,所以突发奇想自己写个吧~该动手就动手啊~
HTML部分
复制代码 代码如下:
<h2>
SuperFish</h2>
<ul class="nav" hid="root">
<li><a href="javascript:void(0)" testid="aa">一级li 1</a>
<ul>
<li><a href="javascript:void(0)" testid="bb">二级 li 1</a></li>
<li><a href="javascript:void(0)" testid="cc">二级 li 2</a>
<ul>
<li><a href="javascript:void(0)" testid="dd">三级 li 1</a></li>
<li><a href="javascript:void(0)" testid="ee">三级 li 2</a></li>
<li><a href="javascript:void(0)" testid="ff">三级 li 3</a></li>
<li><a href="javascript:void(0)" testid="gg">三级 li 4</a></li>
<li><a href="javascript:void(0)" testid="hh">三级 li 5</a></li>
<li><a href="javascript:void(0)" testid="ii">三级 li 6</a>
<ul>
<li><a href="javascript:void(0)" testid="jj">四级 li 1</a></li>
<li><a href="javascript:void(0)" testid="kk">四级 li 2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="javascript:void(0)" testid="ll">二级 li 3</a>
<ul>
<li><a href="javascript:void(0)" testid="mm">三级 li 6</a></li>
<li><a href="javascript:void(0)" testid="nn">三级 li 7</a></li>
<li><a href="javascript:void(0)" testid="oo">三级 li 8</a></li>
<li><a href="javascript:void(0)" testid="pp">三级 li 9</a></li>
<li><a href="javascript:void(0)" testid="qq">三级 li 10</a></li>
</ul>
</li>
<li><a href="javascript:void(0)" testid="rr">二级 li 4</a>
<ul>
<li><a href="javascript:void(0)" testid="ss">三级 li 11</a></li>
<li><a href="javascript:void(0)" testid="tt">三级 li 12</a></li>
<li><a href="javascript:void(0)" testid="uu">三级 li 13</a></li>
<li><a href="javascript:void(0)" testid="vv">三级 li 14</a></li>
<li><a href="javascript:void(0)" testid="ww">三级 li 15</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="javascript:void(0)" testid="xx">一级li 2</a>
<ul>
<li><a href="javascript:void(0)" testid="ss">二级 li 11</a></li>
</ul>
</li>
</ul>
Javascript部分
复制代码 代码如下:
<script language="javascript" type="text/javascript">
var navigationBar = function () {
//使用时将testid属性换成href属性即可
var currentUrlHref = "jj";
var root = $("ul[hid='root']");
$(root).find(">li").attr("first_level", true);
$(root).find(">li>a").addClass("nav_first_style");
//递归向下查找可展开元素并且绑定toggle展开事件
var searchChildren = function (root) {
if (root.find(">li").length > 0) {
$(root).addClass("ul_style");
var liChildren = root.find(">li");
$(liChildren).each(function (idx, item) {
searchChildren($(item));
})
} else if (root.find(">ul").length > 0) {
$(root).addClass("li_style");
if ($(root).attr("first_level") != true.toString()) {
$(root).find(">a").addClass("li_style_a");
}
var aLink = $(root).find(">a");
//初始装载的时候判断当前url是不是和导航栏中的东西匹配
if (currentUrlHref == $(aLink).attr("testid")) {
findInitPosition(aLink);
}
$(aLink).toggle(function () {
$(this).addClass("li_style_a_selected");
$(this).parent().find(">ul").show("fast");
//隐藏非一级节点下的所有兄弟元素
if ($(this).parent().attr("first_level") != true.toString()) {
$(this).parent().siblings().find(">a").removeClass("li_style_a_selected");
$(this).parent().siblings().each(function (idx, item) {
removeClassAndHide(item);
})
} else {
$(this).addClass("nav_first_style_selected");
$(this).removeClass("li_style_a_selected");
$(this).parent().siblings().find(">a").removeClass("nav_first_style_selected");
$(this).parent().siblings().each(function (idx, item) {
removeClassAndHide(item);
})
}
}, function () {
if ($(this).parent().attr("first_level") == true.toString()) {
$(this).addClass("nav_first_style_selected");
$(this).parent().siblings().find(">a").removeClass("nav_first_style_selected");
}
removeClassAndHide($(this).parent());
})
var ulChildren = root.find(">ul");
$(ulChildren).each(function (idx, item) {
$(item).hide();
searchChildren($(item));
});
} else {
if ($(root).attr("first_level") != true.toString()) {
$(root).find(">a").addClass("li_style_a");
}
$(root).addClass("li_style");
$(root).click(function () {
if ($(root).attr("first_level") != true.toString()) {
$(this).find(">a").addClass("li_style_a_selected");
$(this).siblings().find(">a").removeClass("li_style_a_selected");
$(this).siblings().each(function (idx, item) {
removeClassAndHide(item);
addFirstLevelClass(item);
})
} else {
$(this).find(">a").addClass("nav_first_style_selected");
$(this).find(">a").removeClass("li_style_a_selected");
$(this).siblings().find(">a").removeClass("nav_first_style_selected");
removeClassAndHide(this);
}
})
if (currentUrlHref == $(root).find(">a").attr("testid")) {
findInitPosition($(root).find(">a"));
}
}
}
//递归查找初始位置
var findInitPosition = function (aLink) {
var currentLi = $(aLink).parent();
if ($(currentLi).parent().parent().find(">a").length > 0) {
findInitPosition($(currentLi).parent().parent().find(">a"));
}
if ($(currentLi).find(">ul").length > 0) {
$(currentLi).find(">ul").show("fast");
}
if ($(currentLi).attr("first_level") != true.toString()) {
$(currentLi).find(">a").addClass("li_style_a_selected");
} else {
$(currentLi).find(">a").addClass("nav_first_style_selected");
}
}
//递归向下删除所有子节点的选中样式
var removeClassAndHide = function (li) {
if ($(li).attr("first_level") != true.toString()) {
$(li).find(">a").removeClass("li_style_a_selected");
$(li).find(">ul").hide("fast");
if ($(li).find(">ul").length > 0) {
$(li).find(">ul>li").each(function (idx, item) {
removeClassAndHide(item);
});
}
} else if ($(li).attr("first_level") == true.toString()) {
$(li).find(">ul").hide("fast");
$(li).find(">ul>li").each(function (idx, item) {
removeClassAndHide(item);
})
} else {
$(li).find(">ul").show("fast");
$(li).find(">ul>li").each(function (idx, item) {
removeClassAndHide(item);
})
}
}
//递归向上添加第一层节点样式
var addFirstLevelClass = function (li) {
if ($(li).attr("first_level") != true.toString()) {
addFirstLevelClass($(li).parent().parent());
} else {
if (!$(li).find(">a").hasClass("nav_first_style_selected")) {
$(li).find(">a").addClass("nav_first_style_selected");
$(li).siblings().find(">a").removeClass("nav_first_style_selected");
}
}
}
//创建导航
var createNav = function () {
searchChildren(root);
}
createNav();
}
var initNav = new navigationBar();
</script>
不过暂时还没有封装成类似jquery的写法,其实还可以继续封成一个控件~
相关推荐:
SEO快速提升SEO排名的有效策略:让你的网页飞跃搜索引擎,ai调色食物
AI免费生成文章让创作变得轻松自如
文章AI生成标题:让创作更轻松,内容更精彩
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
SEO而且:打造高效网站流量增长的秘密武器,滨江网站推广营销
SEO搜索关键词是什么意思?全方位解析关键词优化的核心要素,lol ai图片
SEO这样做,轻松引爆流量,助力企业成长,无极标准网站优化好处
AI做文章:引领智能创作的未来
ZBlog:开启你的个人网站新时代,轻松搭建与管理,二手手机营销推广方案
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
AI的两个主要发展阶段:从起步到突破,如何重塑未来,wps ai写作去哪里
“更加通顺”-让生活与工作无缝衔接的语言魅力,SEO书架书桌收纳
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
SEO可以帮助网站在搜索引擎中获得较高的排名-助力企业数字化转型的关键,赵立新AI换脸图片对比
ChatGPT画布打不开?如何解决这一常见问题?,Ai怎么储存为Ai格式在桌面
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
seo需要懂什么源码,seo需要懂什么源码技术 ,ai 纤维
文字生成AI开启创作的新纪元
SEO优化引导新官网,助力企业迈向成功之路,宋轶ai换
SEO分类中内部优化的有:让你的网站脱颖而出!,by ai
在线AI文章生成:智能写作的无限可能
SEO译为:网站排名背后的优化策略,会展中心网站优化
360AI写作怎样?助力创作的新风尚,ai到访
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
为什么说seo重要,为什么说seo重要一点 ,中通智能ai是什么意思
SEO占位:如何在竞争激烈的市场中占得先机?,梁平区省心全网营销推广
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
什么是seo如何进行seo,何谓seo ,红米的AI摄影什么意思
为什么行业都要做seo,为什么要做seo ,ai明信片
ChatGPT40不收费版本:科技革新,智能助手助力生活与工作,ai医疗武器有哪些
文章AI扩写:突破创作瓶颈,提升写作效率的秘密武器
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!,ai颜色不对
SEO很多,如何在竞争激烈的市场中脱颖而出?,在SEO优化中
SEO项目:如何通过精确优化提升企业网站排名与转化率,武汉做网站优化的公司
seo,seoul city ,ai精洗
从零到一:网站历史的演变与未来趋势,肇庆市国外网站建设平台
SEO包含的秘密:让你的网站轻松排上首页,新媒体营销推广方案目录
SEM有哪几个平台?数字营销的多元选择,AI怎么取消移动间距
ChatGPT中文版下载,开启智能对话新体验,婚纱ai男
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
ChatGPT出现错误503?你需要知道的解决方案和应对策略,ai拉伸字效
SEO运营工作是什么,seo公司运营 ,720516AI
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
AI人工智能文章生成平台,释放创作无限可能
seo适合什么行业,seo适合的行业 ,在ai如何矢量化
未来写作新模式文章撰写AI如何助力内容创作
SEO排位:如何通过精准策略提升网站排名,获得流量与转化,林海网络推广营销
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
SEO能给企业带来什么价值,seo的影响 ,ai蓝衣美女
什么是seo的豆子,何为seo ,ai圆复制