Jquery:点击任何内容时淡出菜单,除了菜单本身,短代码

时间:2010-02-09 19:02:10

标签: jquery

.saf_search是一个按钮,当它被点击时,菜单.lisearch淡入,当你点击页面上的任何地方时,除了菜单.lisearch,然后它应该淡出(这就是它的支持工作方式)有没有人知道为什么这不起作用?它渐渐消失了,第一次点击页面上的任何地方都会淡出,但第二次尝试淡入菜单时,它会很快淡出,而不会点击文档。我认为这与.one有关,但我在硬盘崩溃之前工作了,现在我无法弄清楚如何让它再次运行......

$('.saf_search').click(function() {
  $('.lisearch').fadeIn(200);
});

$(document).click(function(){
   jQuery(".lisearch").click(function(){ return false; });
jQuery(document).one("click", function() { jQuery(".lisearch").fadeOut(); });
  });

2 个答案:

答案 0 :(得分:1)

原因是因为您正在使用“one”事件绑定函数,该函数绑定到事件并且仅在第一次触发时停留。试试这个:

$(document).click(function(){
    $('.saf_search').click(function() {
        $('.lisearch').fadeIn(200);
    });
    $(document).click(function() { 
        //Make sure that the click isn't inside .lisearch
        if (!$(this).closest('.lisearch').length){
            $(".lisearch").fadeOut();
        }
    });
    $(".lisearch").click(function(){ return false; });
});

答案 1 :(得分:0)

您是否将处理程序包装在外部$(document).click(...)内?你不想要$(document).ready(...)吗?

$(document).ready(function(){
    $(document).click(function() {
        $(".lisearch").fadeOut();
    });
    $(".lisearch").click(function(){
        return false; //Prevent event propagation
    });
});