在jQuery中单击元素外部时触发的函数

时间:2013-04-18 15:44:38

标签: jquery stoppropagation

我想在单击body时显示循环中的不同元素,但元素#search-container form除外。它有效,但只有当我第一次点击元素#search-container form时,它才会工作一次。

$('html').click(function(event) {
    $('#search-container form').click(function(event){
        event.stopPropagation();
    });
    $('html').on('click',function() {
        $('#small-search a').toggleClass('notvisible');
        $('#session').toggleClass('notvisible');
        $('#search-container').css('position','absolute');
        $('#search-container form').toggleClass('visible');
    });
});

2 个答案:

答案 0 :(得分:4)

$('html').not("#search-container form").on('click',function(){
    $('#small-search a').toggleClass('notvisible');
    $('#session').toggleClass('notvisible');
    $('#search-container').css('position','absolute');
    $('#search-container form').toggleClass('visible');
});

答案 1 :(得分:0)

使用.not()从您将click事件绑定到的jQuery对象中删除元素:

$('html').not("#search-container form").on('click',function(){
    $('#small-search a').toggleClass('notvisible');
    $('#session').toggleClass('notvisible');
    $('#search-container').css('position','absolute');
    $('#search-container form').toggleClass('visible');
});

<强>来源(S)

jQuery API - .not()