自动关闭功能供选择

时间:2016-07-04 19:59:10

标签: javascript jquery

我有一个创建下拉列表的按钮,您可以在其中选择多个类别。 现在我希望当我在下拉列表外单击时自动关闭。 像灯箱或模态弹出窗口的东西,如果您点击页面上的任何其他位置,它会关闭。 现在我必须再次单击该按钮才能关闭它。如果我不去页面上的其他地方,下拉列表仍然可见(直到我点击它)

这是按钮的代码:

$(function(){
    $('#browse-btn').click(function(){
        $('#browse-content').toggle('1000');
        $(this).toggleClass('active');                          
        if ($(this).hasClass('active')) $(this).find('span').html('▲')
        else $(this).find('span').html('▼')
    });

    $(".scroll-top").scrollToTop();

    $("#category_id").selectbox();
});

这可能吗? 感谢

4 个答案:

答案 0 :(得分:1)

使用jquery这是我之前用于类似案例场景的代码:

$(document).click(function(event) { 
    if(!$(event.target).closest('.pulldown').length) {
        if($('.pulldown').is(":visible")) {
            $('.pulldown').slideUp()
        }
    }        
})

您可以在Art提交的原始帖子How to detect a click outside an element?中详细了解此信息。

答案 1 :(得分:0)

由于您没有演示,我不确定您要隐藏的元素,因此我无法提供完整的代码,但您应该执行以下操作:

$("body").click(function(event) {
    if (event.target.id != "browse-btn") {
        // Do something when there's a click outside of #browse-btn 
        // and the element you want to hide is currently visible
    }
});

答案 2 :(得分:0)

您可以将click事件附加到正文标记的所有chidren,以删除该活动类,但是您希望确保取消绑定该事件,以便每次发生单击时都不会运行该事件&# 39;有一些防止违约的东西。像这样:

$(function(){
    var hidePulldown = function(){
        $('#browse-btn').removeClass('active');
        $('body *').unbind("click", hidePulldown);
    }
    $('#browse-btn').click(function(){
        $('#browse-content').toggle('1000');
        $(this).toggleClass('active');                          
        if ($(this).hasClass('active')) $(this).find('span').html('▲')
        else {
            $(this).find('span').html('▼');
            $(document).on('click', 'body *', hidePulldown);
        }
    });

    $(".scroll-top").scrollToTop();

    $("#category_id").selectbox();
});

另外,

$(document).on('click', element, function(){function body})

是附加点击事件的首选方式,我相信:$(document).on('click', '#id', function() {}) vs $('#id').on('click', function(){})

答案 3 :(得分:0)

在阅读了一些答案之后,这对我来说是完美无缺的:

$(document).click(function(event) { 
if(!$(event.target).closest('#menucontainer').length &&
   !$(event.target).is('#menucontainer')) {
    if($('#menucontainer').is(":visible")) {
        $('#menucontainer').hide();
    }
}        
})

感谢您以正确的方式指点我!