javascript - 如果单击 div 外部(目标类),则删除类

标签 javascript jquery

我有一个菜单,用户单击链接并通过 .addClass( "show-nav") 显示列表

这里是jsFiddle带有JS代码:

jQuery(".nav-js-trigger").each(function(){
    this.onclick = function() {

        var hasClass;
        hasClass = jQuery(this).next().hasClass( "show-nav" );

        jQuery('.show-nav').removeClass('show-nav');

        if (hasClass === false) {
            jQuery(this).next().addClass( "show-nav" );
        }

    }
});

如果用户点击 show-nav 类的 div 的外部,我想删除 show-nav 类。 我该怎么做?

我见过 e.target div ID 的示例,但没有见过类,尤其是这样的场景。

最佳答案

您可以向带有 event.stopPropagation() 的元素添加一个监听器,并向主体添加另一个监听器,以捕获此事件(如果之前未拦截过)。

类似这样的事情:

$(".show-nav").on("click", function(event){
    event.stopPropagation();
});

$("body").on("click", function(event){
    $(".show-nav").hide(); // or something...
});

为了简化您的用例,这里有一个 JSFiddle .

$(".trigger").on("click", function(event)
{
    $(".menu").toggle();
    event.stopPropagation();
});

$(".menu").on("click", function(event)
{
    event.stopPropagation();
});

$(document).on("click", function(event)
{
    $(".menu").hide();
});
.menu
{
    display: none;
    background: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="#" class="trigger">menu</a>
<div class="menu">Hello</div>

关于javascript - 如果单击 div 外部(目标类),则删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30402170/

相关文章:

javascript - 如果选项卡太多,如何使 Jquery UI 选项卡水平滚动

Javascript 进度动画

Iframe 中定义的 Javascript 回调函数

javascript - 获取 <td> 的 html

javascript - 尝试限制 div 移动时出现问题

javascript - Jquery 不是选择器不适用于子元素?

javascript - 如何在悬停时使按钮出现在div的底部

javascript - 尝试在网站上包含日期时间选择器。错误是什么?

javascript - 如何以编程方式防止网页在特定时间段内刷新?

javascript - 如何在 jQuery ui Slide Ranger 中使用 if 语句?