2012-11-11 90 views
0

我正在使用jquery-ui對話框(非模態對話框)。如果用戶在對話框外單擊,我想關閉對話框。爲此,我使用Jquery Outside Events Plugin。我創建了一個小提琴也:如何關閉外部點擊jquery-ui對話框?

http://jsbin.com/apezok/3/edit

在這撥弄我創建了一個按鈕,通過它我們可以打開一個對話框。我還將clickoutside事件 與該對話框綁定。現在我的問題是,當我點擊按鈕打開對話框,單擊外部事件執行並關閉對話框。如何在打開對話框時停止執行此事件以執行操作?

回答

2

單擊按鈕元素會首先觸發該元素的單擊事件,然後單擊事件會向上傳播到DOM中的更高級別。 event.stopPropagation()阻止事件越來越傳播到更高的水平:

$("#opendialog").click(function(event){ 
    event.stopPropagation(); 
    $(".dialog").dialog("open"); 
}); 

如果用戶單擊打開按鈕時,對話框已經打開?這應該算作是在對話框外點擊並關閉它嗎?如果這是期望的行爲,則以下工作:

$("#opendialog").click(function(event){ 
    if (!$(".dialog").dialog("isOpen")) { 
    event.stopPropagation(); 
    $(".dialog").dialog("open"); 
    } 
});