简单多级菜单导航实现jq小插件

本文介绍了一款基于jQuery的简单多级菜单导航插件,支持自定义触发事件、活动类名、菜单盒子和菜单列表。通过点击菜单项,可以展开或收起子菜单,并通过添加或移除特定类名来改变菜单状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单多级菜单导航实现js

简单多级菜单导航插件,觉得不实用的话可以联系我修改哦
演示实例:
js代码如下:

; (function ($, window, document, undefined) {
    $.fn.setMenu = function (options) {
        var defaults = {
            event: "click", //触发响应事件
            activeClass: 'on',//开启菜单加的类名
            menuBox:'ul',
            menuList:'li'
        };
        var options = $.extend({}, defaults, options);
        var $this = $(this); //当然响应事件对象
        //功能代码部分
        //初始化
        $(this).find(options.menuBox).hide();
        //绑定事件
        $this.find(options.menuList).on(options.event, function (e) {
            if ($(this).hasClass(options.activeClass)) {
                $(this).removeClass(options.activeClass).children(options.menuBox).slideUp();
            } else {
                $(this).addClass(options.activeClass).children(options.menuBox).slideDown();
                $(this).siblings(options.menuList).removeClass(options.activeClass).find(options.menuBox).slideUp().find(options.menuList).removeClass(options.activeClass);
            }
            //阻止事件冒泡
            if (e && e.stopPropagation) {
                e.stopPropagation();
            } else {
                window.event.cancelBubble = true;
            }
        });
    }
})(jQuery, window, document);
//调用
$(function(){
	$('#menu').setMenu();
})

很简单,感觉没什么好解释的,目前支持自定义:

event: "click", //触发响应事件
activeClass: 'on',//开启菜单加的类名
menuBox:'ul',//每级菜单盒子
menuList:'li'//每行菜单

我的css:css自己写哈,我给个参考,每级可以设不同的类名,设不同的样式,打开的菜单可以加on类名或者自定义的activeClass设置。

* {
    margin: 0;
    padding: 0;
}
li {
    list-style: none;
}
li {
    position: relative;
    padding-left: 20px;
}
li:before {
    content: '>';
    transition: all .3s;
    display: inline-block;
}
li.on:before {
    transform: rotate(90deg);
}
        #menu>.on{
            background: #eee;
        }
        .sec-menu>.on{
            background: #ddd;
        }
        .third-menu>.on{
            background: #ddd;
        }

html:

<ul id="menu">
        <li>
            一级菜单1
            <ul class="sec-menu">
                <li>二级菜单1
                    <ul class="third-menu">
                        <li>三级菜单1
                            <ul>
                                <li>4级菜单1</li>
                                <li>4级菜单1</li>
                                <li>4级菜单1</li>
                                <li>4级菜单1</li>
                                <li>4级菜单1</li>
                            </ul>
                        </li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li>二级菜单2
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li>二级菜单3
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>
            一级菜单2
            <ul class="sec-menu">
                <li>二级菜单1
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li>二级菜单2
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li>二级菜单3
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>
            一级菜单3
            <ul class="sec-menu">
                <li>二级菜单1
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li class="sec-menu">二级菜单2
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li class="sec-menu">二级菜单3
                    <ul class="third-menu">
                        <li>三级菜单1</li>
                        <li>三级菜单2</li>
                        <li>三级菜单3</li>
                        <li>三级菜单4</li>
                        <li>三级菜单5</li>
                    </ul>
                </li>
                <li>二级菜单4</li>
                <li>二级菜单5</li>
            </ul>
        </li>
        <li>一级菜单4</li>
        <li>一级菜单5</li>
    </ul>

最后,记得引jq噢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樊一翻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值