jQuery UI对话框中关闭(x)按钮的专用事件处理程序
Dedicated event handler for close (x) button in jQuery UI Dialog
是否有一种方法可以连接到jQuery UI对话框上的关闭(x)按钮,以便提供专用的事件处理程序?使用"关闭"或"关闭前"事件是不起作用的,因为如果对话框中有其他按钮也会导致对话框关闭,那么您总是会碰到"关闭"answers"关闭后"事件,这是不可取的。我想要一种从关闭(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();
});
FIDDLE
我相信这就是您正在寻找的解决方案-您需要解除对点击事件的绑定,并将您的自定义处理程序重新绑定到它。
尽管这个线程很旧,但我仍然会在这里添加我的解决方案,希望能让其他搜索它的人受益
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);
}
}
);
Fiddle链接:
http://jsfiddle.net/morefool/n82649d5/
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 多个单选按钮组相互干扰
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- Javascript按钮下拉列表
- jquery试图按名称获取按钮位置
- 漂亮照片图片库中的Facebook赞按钮
- 扩展移相器按钮类不工作
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 单击按钮以等待单击按钮
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 如何检测用于WebGL的专用或集成显卡
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 如何从querySelectorAll中获取按钮类型
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 按下按钮时保存cookie
- 是否可以禁用jquery中的单个单选按钮
- ASP.NET通过单击JavaScript按钮触发c#事件
- jQuery UI对话框中关闭(x)按钮的专用事件处理程序
- 如何仅在单击专用按钮时激活功能