Javascript Jquery单击事件以多个元素为目标

Javascript Jquery单击事件以多个元素为目标,javascript,jquery,Javascript,Jquery,我在一个图像上有两个触发器。一般行为: 当我点击一个触发器时,它会显示一个小的上下文框(让它工作起来) 当我在上下文框或触发器外单击时,它应该会消失(使其正常工作) 当我单击另一个触发器时,如果有另一个触发器/上下文框已处于活动/打开状态,则应关闭另一个触发器/上下文框,并打开最近单击的一个触发器(不工作) 以下是html: <span class='pulse-button' id="button-1"></span> <div class="content

我在一个图像上有两个触发器。一般行为:

  • 当我点击一个触发器时,它会显示一个小的上下文框(让它工作起来)
  • 当我在上下文框或触发器外单击时,它应该会消失(使其正常工作)
  • 当我单击另一个触发器时,如果有另一个触发器/上下文框已处于活动/打开状态,则应关闭另一个触发器/上下文框,并打开最近单击的一个触发器(不工作)
以下是html:

<span class='pulse-button' id="button-1"></span>

<div class="content-box context-closed tabs" id="tabs1">
</div>

我在这里做错了什么?

您不需要
中的
其他
。脉冲按钮
单击。因为
else
块中的代码应该执行任何
.pulse按钮
是否激活了类
脉冲按钮
。更改您的单击事件,如下所示

$(".pulse-button").click(function(e){
    e.stopPropagation();
    if($(".pulse-button").not(this).hasClass("pulse-button-active")) {
        $(".pulse-button").not(this).removeClass("pulse-button-active");
        $(".pulse-button").not(this).next().addClass("context-closed");
    }
    $(this).addClass("pulse-button-active");  
    $(this).next().removeClass("context-closed");
});

您不需要在
.pulse按钮中单击
else
。因为
else
块中的代码应该执行任何
.pulse按钮
是否激活了类
脉冲按钮
。更改您的单击事件,如下所示

$(".pulse-button").click(function(e){
    e.stopPropagation();
    if($(".pulse-button").not(this).hasClass("pulse-button-active")) {
        $(".pulse-button").not(this).removeClass("pulse-button-active");
        $(".pulse-button").not(this).next().addClass("context-closed");
    }
    $(this).addClass("pulse-button-active");  
    $(this).next().removeClass("context-closed");
});

我刚刚意识到我输入了错误的东西——如果你在触发器的上下文框打开的情况下单击触发器,它不会关闭上下文框,而它应该关闭。因此,单击上下文框以外的任何位置或单击触发器都应将其关闭。。。你知道怎么让它工作吗?好的,我已经找到了修复方法,如果你按下了它的触发器,就可以关闭上下文框。。。您给了click函数来切换类,而不是添加或删除它。。。代码:$(this).addClass(“脉冲按钮激活”)$(this).next().removeClass(“上下文关闭”)到<代码>$(此).toggleClass(“脉冲按钮激活”)$(this).next().toggleClass(“上下文关闭”)我刚刚意识到我输入了错误的内容–如果在触发器的关联上下文框打开的情况下单击触发器,它似乎不会关闭上下文框,而应该关闭。因此,单击上下文框以外的任何位置或单击触发器都应将其关闭。。。你知道怎么让它工作吗?好的,我已经找到了修复方法,如果你按下了它的触发器,就可以关闭上下文框。。。您给了click函数来切换类,而不是添加或删除它。。。代码:$(this).addClass(“脉冲按钮激活”)$(this).next().removeClass(“上下文关闭”)到<代码>$(此).toggleClass(“脉冲按钮激活”)$(this).next().toggleClass(“上下文关闭”)