侧边栏多级菜单滑动效果+JQ解决事件冒泡

先搭好整体结构,样式根据情况设计

<ul>
    <li>
        <a class="item-1st">一级菜单</a>
        <ul class="nav-2nd">
            <li>
                <a class="item-2nd">二级菜单</a>
                <ul class="nav-3rd">
                    <li>
                        <a class="item-3">三级菜单</a>
                    </li>
                    <li></li>
                </ul>
            </li>
            <li>
                <a class="item-2nd">二级菜单</a>
            </li>
        </ul>
    </li>
    <li>
        <a class="item-1st">一级菜单</a>
    </li>
</ul>

使用JQuery方便快速安全无痛

$(".item-1st").click(function () {
    $(this).next().slideToggle();
});
$(".item-2nd").click(function () {
    $(this).next().slideToggle();
});

jQueryslideToggle() 方法可以在 slideDown()slideUp() 方法之间进行切换。

如果元素向下滑动,则 slideToggle() 可向上滑动它们。

如果元素向上滑动,则 slideToggle() 可向下滑动它们。

总结错误:

不能在上级菜单的li标签中使用slideToggle()方法显示下级菜单,会出现事件冒泡
即是指该菜单的点击事件会触发上级菜单的click事件。

三种解决方法:

  1. return false:可以阻止默认事件和冒泡事件

  2. event.stopPropagationIE下event.cancelBubble = true;:阻止冒泡事件但允许默认事件

  3. event.preventDefault();IE下event.returnValue = false;:阻止默认事件但允许冒泡事件

上述案例另一种实现方法

<li class="item-2nd">二级菜单</li>

这样的话,代码结构会相较第一种好一些

$(".item-2nd").mousedown(function(event){
    if(window.event){
        event.cancelBubble  = true;  //IE下阻止冒泡
    }else{
        event.stopPropagation();
    }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值