Jquery“关闭外部”功能并在按钮上隐藏容器

时间:2015-11-13 06:33:09

标签: javascript jquery html

我想问一下,如何使用之前打开此元素的按钮隐藏一些元素?

此代码将更好地解释:

<a id="elem-toggle" href="#">filter</a>

<div id="filters">
  <checkbox>
  <checkbox>
  <checkbox>
  <checkbox>
</div>

// Javascript
$('#elem-toggle').on('click', app.toggleFilters);

toggleFilters: function () {
    var filters = $('#filters');
    filters.toggle(0, function () {
        $(document).mouseup(function (e) {
            var filters = $("#filters");
            if (!filters.is(e.target) && filters.has(e.target).length === 0) {
                filters.hide();
                $('#elem-toggle').removeClass('active');
            }
        });
    });
}

现在,这段代码的作用是:点击$ elem-toggle应显示/隐藏#filters。

但它只打开#filters,但不会隐藏它们。

当“点击外部”发生时,我已使用$(document).mouseup隐藏过滤器。

所以基本上,我只想hide filters on #elem-toggle因为这个功能不起作用,我不知道为什么。

感谢您的回复。

PS:请注意,我在代码中使用过toogle()函数。

2 个答案:

答案 0 :(得分:0)

$('#elem-toggle').click(function(){

$('#filters').toggle('slow');


})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a id="elem-toggle" href="#">filter</a>

<div id="filters">
qweqweqweqweq
</div>

试试这种方式。

使用.toggle()

  

描述:显示或隐藏匹配的元素。

答案 1 :(得分:0)

因为你只是想显示或隐藏过滤器,为什么你不去寻找

$('#elem-toggle').on('click',function(){
  $("#filters").toggle();});

这应该完全符合您的要求。