[英]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);
}
}
);
小提琴鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.