javascript - jquery点击外部时隐藏div

标签 javascript jquery

我正在尝试设置 div 和 ul 的样式,使其功能类似于 .但是,我有一个问题: 1)我只想切换我点击的ul并隐藏其他ul。所以我想知道jquery是否支持某些功能,例如“不点击”? 2)我想当鼠标在外面点击时隐藏所有的ul。我做了一些研究,看到其他人使用 mouseup 或单击 body。但我不太确定它是如何工作的。

$(document).ready(function() {
    $('.hide').each(function() {
      $(this).hide();  
    });
  
    $('.select').click(function() {
        var id = '#' + $(this).attr('id');
        var sub = id + '_sub';
        $(sub).slideToggle();
    });
  
    $('body').mouseup(function() {
       if($(this).length == 0) {
         $(this).hide();  
       }
    });
});
div.select {
  display: inline-block;
  margin: 10px;
  padding: 20px;
  background: red;
  cursor: pointer;
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div id="1" class="select">
  <div class="main">
    <span>1</span>
  </div>
  <div>
    <ul id="1_sub" class="hide">
      <li>1</li>
      <li>2</li>
    </ul>
  </div>
</div>
<div id="2" class="select">
  <div class="main">
    <span>1</span>
  </div>
  <div>
    <ul id="2_sub" class="hide">
      <li>1</li>
      <li>2</li>
    </ul>
  </div>
</div>
  
<div id="3" class="select">
  <div class="main">
    <span>1</span>
  </div>
  <div>
    <ul id="3_sub" class="hide">
      <li>1</li>
      <li>2</li>
    </ul>
  </div>
</div>

</body>

最佳答案

给你: DEMO

$(document).ready(function() {
    $('.hide').hide(); //hide in the beginning

    $('.select').click(function() {
        $('.hide').slideUp(200); //hide all the divs
        $(this).find('.hide').slideDown(200); //show the one that is clicked
    });
    $(document).click(function(e){
        if(!$('.select').is(e.target) || !$('.select').has(e.target)){ // check if the click is inside a div or outside
            $('.hide').slideUp(200); // if it is outside then hide all of them
        }
    });
});

您可以定义您的 notClick() 函数,如下所示:

$.fn.notClicked= function(clickPosition){
    if (!$(this).is(clickPosition.target)   && $(this).has(clickPosition.target).length === 0){
        return true;
        }
    else{
        return false;
        }
    };

然后将其用作:

$(document).click(function(e){
    alert($('.select').notClick(e)); // will return true if it is not clicked, and false if clicked
});

关于javascript - jquery点击外部时隐藏div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26825489/

相关文章:

javascript - 将 id 通过 Link 传递给 getServerSideProps :next js

javascript - jqgrid : multiselect vales not working

javascript - 强制门户和 HTTPS 重定向

javascript - 根据http请求动态更新 Angular View

php - 序列化形式 Symfony2 上的 json_decode

jquery - 压缩多个 jquery if 语句

javascript - 生成时间戳日期范围之间的空数据 | JavaScript

javascript - jPlayer - 设置为只播放一次

javascript - 尝试将 Bootstrap Accordion 中的数据切换限制为 .one click 事件

jQuery 禁用类上的复选框