jQuery - 使用Live打开一个窗口,然后关闭它?

时间:2010-10-24 15:55:35

标签: jquery css

我有一个对话框供所有用户点击一个项目,点击后打开....这是代码:

$("#byproject").live("click", function() {
    $("#projectPicker").fadeIn();
    return false;
});
// Close the space dialog on selection
$(".projectSelect").live("click", function() {
    $("#projectPicker").fadeOut('fast');
});

这样可以很好地打开位于绝对位置的对话框,在“选择项目”按钮旁边...

这里的问题是,如果用户在框外点击(即他们改变主意),框就不会关闭......

我能说一些聪明的方法,当这个东西打开时,如果用户点击对话框外的任何地方,请关闭它吗?

由于

2 个答案:

答案 0 :(得分:3)

您需要将单击事件附加到将关闭窗口的文档正文,并阻止单击事件的传播,因此单击窗口将不会关闭它。我给a similar question 2 years ago写了一个类似的答案 - 不确定它是否足够类似于关闭这个。

$('body').click(function() {
  //Close window
});

$('#projectPicker').click(function(event){
    event.stopPropagation();
});

顺便问一下,您是否有理由在链接上使用直播活动?至少具有id的那个应该使用常规点击事件。

答案 1 :(得分:0)

我认为这应该足够了

$('*').click(function(e){
        e.stopPropagation();
        if($(this).is('#byproject')){       
             $("#projectPicker").fadeIn();
             return false;
        }else{
             $("#projectPicker").fadeOut();
        }
    });

因此,如果打开对话框,则在页面上单击的任何其他元素都将关闭对话框。