【问题标题】:Close Toggle on outside click关闭外部点击切换
【发布时间】:2012-07-31 14:06:24
【问题描述】:

我对 javascript 和 JQuery 还是很陌生...如何通过在切换区域外单击来关闭此 div(我不希望用户必须使用关闭按钮)

代码如下所示:

 function toggleDiv(divId) {
 $("#"+divId).toggle();
 }

 function showonlyone(thechosenone) {
 $('.newnote').each(function(index) {
      if ($(this).attr("id") == thechosenone) {
           $(this).show(0);
      }
      else {
           $(this).hide(0);
      }
 });
 }

html 看起来像这样

<div class="note">

     <a id="myHeader1" href="javascript:showonlyone('newnote1');" >
          <img src="images/SN_NotesPage_14.png">
     </a>      

     <div class="newnote" id="newnote1">
          <a>
               <img src="images/SN_NotesPage_16.png">
          </a>
     </div>
</div>

谢谢

【问题讨论】:

    标签: javascript jquery onclick toggle forceclose


    【解决方案1】:

    我通常会在文档正文中添加一个单击事件侦听器以关闭覆盖。为了防止通过单击关闭覆盖,我向包含 ev.stopPropagation(); 的覆盖添加了第二个单击事件侦听器;

    所以使用 jQuery 它看起来像:

    $(document.body).bind('click.closeNote', function() {
        $('.newnote').hide();
    });
    $('.newnote').bind('click.closeNote', function(ev) {
        ev.stopPropagation();
    });
    

    另一种方法是添加一个覆盖整个页面的透明 div(zIndex 低于注释)。然后,您可以向此 div 添加一个单击事件侦听器来关闭注释。

    编辑: 请注意,上面的示例性能不是很好,因为它在每次点击时都会执行一个选择器。只需在显示笔记时绑定此事件,并在它们关闭时取消绑定。

    【讨论】:

    • 谢谢你,很好的解决方案——当我点击它时 div 也会关闭。我可能错过了 ev.stopPropagation() 上的某些内容
    猜你喜欢
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多