首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重写javascript中的onclick事件

重写javascript中的onclick事件
EN

Stack Overflow用户
提问于 2015-06-29 03:32:17
回答 4查看 3.7K关注 0票数 2

我有一个问题。实际上我有这样的结构:jsfiddle link

当我单击"Link example 2 with accordion"时,它确实展开了ul。

但当我单击其中的任何链接时,它都会隐藏起来,因为"Link example 2 with accordion"下的链接都在<li class="accordion">中。

我的问题是:我如何才能阻止这种行为?

EN

回答 4

Stack Overflow用户

发布于 2015-06-29 03:55:34

向子级添加类

代码语言:javascript
复制
<ul>
    <li><a href="#">Link example 1</a> </li>
    <li class="accordion">
        <a href="#">Link example 2 with accordion</a>
        <ul class="child" style="display: none;">
            <li><a href="#">Link inside accordion 2</a></li>
            <li><a href="#">Link inside accordion 3</a></li>
        </ul>
    </li>
    <li><a href="#">Smth</a> </li>
</ul>

脚本

代码语言:javascript
复制
$(".child").click(function(e) {
    e.stopPropagation();
});
票数 2
EN

Stack Overflow用户

发布于 2015-06-29 07:25:56

只需对子元素使用event.stopPropagation()即可。你甚至不需要一个类

代码语言:javascript
复制
$("li > ul").click(function(event){
    event.stopPropagation();
});

小提琴:https://jsfiddle.net/Nillervision/0gzx9Lv8/#base

票数 1
EN

Stack Overflow用户

发布于 2015-06-29 07:03:57

将click处理程序附加到锚定标记,而不仅仅是accordion。像这样的东西

代码语言:javascript
复制
$(".accordion a").click(function (e) {
    var closestLi = $(this).closest('li');
    if (closestLi.hasClass('active')) {
        closestLi.children('ul').slideUp();
        closestLi.removeClass('active');
    } else {
        closestLi.children('ul').slideDown();
        closestLi.addClass('active');
    }
});

这是一个演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31103910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档