JS怎么写二级菜单呢?

JS怎么写二级菜单呢?,第1张

鼠标移出导航二级菜单就消失是因为二级菜单没有在导航容器内,所以mouseout条件满足了,自然就消失了。

<!--一级导航-->

<ul class='menu'>

<li class='menu-lei'>

<!--二级菜单-->

<ul class='menu-sub'>

<li class='menu-sub-cnt' name='b'></li>

<li class='menu-sub-cnt' name='b'></li>

...

</ul>

</li>

<li class='menu-lei'>

<!--二级菜单-->

<ul class='menu-sub'>

<li class='menu-sub-cnt' name='b'></li>

<li class='menu-sub-cnt' name='b'></li>

...

</ul>

</li>

...

</ul>

结果改成这样就行了,这样二级菜单在导航容器内,所以不会由于mouseout条件必须满足从二级菜单移出才会执行。

$(".menu_lei").each(function(){

$(this).mouseover(function(){

$(this).find(".menu-sub").show()

})

$(this).mouseout(function(){

$(this).find(".menu-sub").hide()

})

})

1直接在body ready的时候运行 ShowMenu(obj,noid)这个函数,就可以直接打开了

2目测是

for(var i=0i<ul.lengthi++){if(i!=n){ul[i].className = "no"}}

for(var i=0i<span.lengthi++){if(i!=n){span[i].className = "no"}}

这2句把其他的都设置成不显示了

1. 既然你使用了 ui-router,说明你的应用是 单页程序,既然是单页程序,首先要考虑动态路由是否有必要?只要根据用户角色

显示该角色可以访问的菜单即可,在每次路由切换的时候判断下是否有访问此路由的权限,没有就跳转到指定页面即可;

2. 至于你说的动态加载 是想根据用户角色动态返回指定角色的路由、模板、controller

js吗?一般项目把所有的js和模板都打包压缩成一个js,反而效果更好;

3. 如果你非要想根据角色动态生成路由,可以在angular还没有启动的时候获取该用户角色的所有路由(也可以说菜单),然后循环菜单 通过

ui-router 动态加入即可;

4. 这样只有路由是动态载入了,关于每个路由对应的js,如果你也想实现 动态载入的话,估计就需要使用类似 requirejs 的东西,比如

marcoslin/angularAMD · GitHub 或者 atian25/angular-lazyload · GitHub

或者自己写一个也可以,原理就是在 路由的 resolve 中加载对应的js

5. 模板感觉就不需要动态加载了吧,因为使用ng,模板都是前端模板,如果要根据角色动态生成模板岂不是变成服务端渲染了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11489027.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存