当前位置: 首页 > 知识库问答 >
问题:

尝试关闭下拉框时,下拉框打开,用户单击文档

韦俊英
2023-03-14

我试图隐藏我的下拉框,当用户点击它的打开状态之外,我使用一个标志isActive,确定菜单是否打开,然后我在文档上添加了一个点击事件来隐藏菜单,如果如果单击菜单,则打开并停止菜单上的分配。但是现在,当我单击我的下拉锚标记时,文档单击事件被触发。有人能告诉我如何解决这个问题吗?

JS

//User profile share tooltip
        $('.btn-social-share').on('click', function(e){
            e.preventDefault();

                if( !isActive ){
                    $('.social-share-options').show();
                    isActive = true;
                } else {
                    $('.social-share-options').hide();
                    isActive = false;
                }

        });

        /* Anything that gets to the document
           will hide the dropdown */
        $(document).on('click', function(){
            if( isActive ){
                $('.social-share-options').hide();
                isActive = false;
            }
        });

        /* Clicks within the dropdown won't make
           it past the dropdown itself */
        $('.social-share-options').click(function(e){
          e.stopPropagation();
        });

共有2个答案

马星阑
2023-03-14

我还没有测试它,但我认为您需要添加e.stopPropagation(),以防止事件冒泡:

  $('.btn-social-share').on('click', function(e){
        e.preventDefault();
        e.stopPropagation();
        //...

http://api.jquery.com/event.stopPropagation/

鄢英哲
2023-03-14

设置一个条件,检查单击的内容是否在下拉列表中,然后隐藏下拉列表,如果单击的内容不在下拉列表中:

$(document).on('click', function(e){
    if( isActive && $(e.target).closest('.social-share-options').length === 0 ){
        $('.social-share-options').removeClass('is-active');
        isActive = false;
    }
});
 类似资料:
  • 我正在使用可点击的下拉菜单进行导航。下拉列表使用输入标记。我陷入困境的地方是,如果访问者单击页面上的其他地方,我需要关闭下拉列表。我正在尝试使用目标属性、matches()方法和onclick事件。 我在控制台中注意到的是,当我打开下拉列表时,两个条件语句都出现了,下拉列表没有打开。这就好像下拉列表同时打开和关闭。 我做错了什么?我如何让它正常工作,以便用户只需打开下拉菜单,并在单击网页上的其他位

  • 我正在尝试制作一个下拉菜单,其中。单击时会显示下拉内容,如果用户单击栏中的任何其他下拉列表,下拉内容将消失。问题是我有多个下拉列表,我想我只是需要帮助修改我现有的javascript。我希望侧边栏(nav)只显示当前活动的下拉菜单。在“我的代码”上,当您打开下拉列表时,它仍然会打开,直到用户再次单击下拉箭头以关闭该特定下拉列表。

  • 各种大小的下拉框 <div class="row"> <div class="field-label">mini</div> <div class="select-size" data-skin="mini"></div> </div> <div class="row"> <div class="field-label">tiny</div> <div class=

  • 我试图创建下拉菜单,点击打开。这是通过添加类到class elements,基本上显示菜单。到目前为止,一切正常,但我真的不明白当用户单击打开的菜单之外的任何地方时,如何关闭打开的下拉菜单。到目前为止,我的代码如下所示: 注意:当用户单击打开的菜单时,该菜单不应关闭。只有当用户在打开的菜单外单击时,它才应关闭。 我如何使用普通的Javascript做到这一点?感谢任何帮助。

  • 问题内容: 我有一个Twitter Bootstrap下拉菜单。正如所有Twitter Bootstrap用户所知,单击(甚至在其中单击)时,关闭菜单。 为避免这种情况,我可以轻松地在下拉菜单上附加一个click事件处理程序,只需添加著名的即可。 但是,这看起来很简单,而且是非常普遍的行为,而且由于(以及)事件处理程序都委派给了对象,因此这些元素(上 一个/下一个 控件,…)上的事件将被“忽略”。

  • 我有一个Twitter引导下拉菜单。正如所有Twitter引导用户都知道的那样,下拉菜单会在点击时关闭(甚至在其中点击)。 为了避免这种情况,我可以很容易地在下拉菜单上附加一个click事件处理程序,并简单地添加著名的。 但是,这看起来很简单,也是一种非常常见的行为,而且由于(以及)事件处理程序被委托给对象,因此这些元素(Prev/Next controls,...)上的事件将被“忽略”。 依赖T