簡體   English   中英

jQuery UI對話框中關閉(x)按鈕的專用事件處理程序

[英]Dedicated event handler for close (x) button in jQuery UI Dialog

有沒有辦法連接到jQuery UI對話框上的close(x)按鈕,這樣你就可以提供專用的事件處理程序? 使用“close”或“beforeclose”事件不起作用,因為如果對話框中還有其他按鈕也會導致對話框關閉,那么您總是會遇到“關閉”和“關閉前”事件,這是不可取的。 我想要一種從close(x)按鈕運行特定代碼的方法。

每當一個事件導致jQuery UI小部件中的另一個事件時,原始事件總是包含在事件對象中。 在這種情況下,您可以查看傳遞給close回調或dialogclose事件的事件對象,並檢查event.originalEvent存在。 如果是,則可以假設通過單擊關閉按鈕關閉對話框。 這也適用於beforeclose

如果你想絕對確定它是標題欄中的關閉按鈕,那么你可以檢查event.originalEvent.target並使用.closest()檢查類或DOM位置。

這里有一個jsbin顯示了這個: http ://jsbin.com/ajoheWAB/1/edit

你可以嘗試:

$(document).on('click','.ui-dialog-titlebar-close',function(){
    //close button clicked
});

據我所知,沒有辦法直接連接到該按鈕,但您可以通過添加dialogClass並自行連接事件處理程序來為彈出窗口執行特定操作:

var dialogClass ="yourPopupTitle";

$(document).on('click', '.'+ dialogClass  +' .ui-dialog-titlebar-close', function() { 
    handleEvent();
});

小提琴

我相信這是您正在尋找的解決方案 - 您需要取消綁定click事件並將自定義處理程序重新綁定到它。

雖然這個帖子已經老了,但我仍然在這里添加我的解決方案,希望能夠讓其他搜索它的人受益。

var fnCustomerHandler = function() {
    alert("Here is your custom handler...");  
};

$( "#dialog" ).dialog({
        open: function(event, ui) {
            var el = $(this).closest('.ui-dialog').find('.ui-dialog-titlebar-close');
            el.off();
            el.on("click", fnCustomerHandler);
        }
    }
);

小提琴鏈接:

http://jsfiddle.net/morefool/n82649d5/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM