如何使用Jquery编写'if not clicked'或'if clicked outside element'?

时间:2010-08-31 10:47:48

标签: javascript jquery

我遇到了如何阻止我的菜单执行fadeOut()函数的问题。当我单击菜单上的主链接打开子菜单时,它会淡出。以下是代码目前的工作方式:

    $('a.main-menu-item').click(function(){

    if($('.rtmenu:visible')){

        $('.rtmenu').click(function(e) { e.stopPropagation(); });

        $(document).click(function() {
            $('.rtmenu').fadeOut(200);
        });
    }
})

任何人都可以告诉我如何写“如果没有点击a.main-menu-item”,它会显示“文档”吗?

备受赞赏


已完成解决方案!

$('.rtmenu').click(function(e) { e.stopPropagation(); });
$('.rtmenu').mouseout(function(){ 
     $(document).one('click',function() { $('.rtmenu').fadeOut(200); }); 
 })

2 个答案:

答案 0 :(得分:1)

看看Ben Alman的"outside events" plugin。它允许您定义一系列事件,而不仅仅是单击事件。有了它,你的代码看起来像这样:

$('.rtmenu').bind('clickoutside', function() {
    $(this).fadeOut(200);
});

另外,您不应该在菜单的click事件中设置绑定,每次单击菜单选项时,这将附加另一个处理程序。您的代码应替换为:

$('a.main-menu-item').click(function(){
    // Show menu item
});
$('.rtmenu').bind('clickoutside', function() {
    $(this).fadeOut(200);
});

答案 1 :(得分:0)

使用blur事件来处理失去焦点。 This也可能会有所帮助。