【问题标题】:Is there any way to capture only 'X' event from modal dialogue using jquery?有没有办法使用 jquery 从模态对话中仅捕获“X”事件?
【发布时间】:2016-09-12 18:18:41
【问题描述】:

我正在以这种方式进行模态对话,

$("#dialog").dialog({
autoOpen: false,
resizable: false,
width: 400,
height: 140,
modal: true, 
buttons: {
  "SUBMIT": function() { 
    $(this).dialog("close");
  }, 
  "CANCEL": function() { 
    $(this).dialog("close");
  } 
},
close: function() {
  alert('close');
}
});

一旦我单击模态对话框的 x 按钮,我就会尝试获取警报('关闭')。

但问题是即使在提交 bitton 并取消按钮单击我的模态“#dialog”后,也会调用此警报('close')。

有什么方法可以让我得到警报,只有点击我的对话框的“X”框,而不是点击 sublit 或取消按钮。

然而 $(this).dialog("close");应该在提交和取消按钮事件中。

如果我删除 $(this).dialog("close");它的工作。

我只想在单击“X”时收到警报,而不是在模式对话框关闭时收到警报。

谁能帮我解决这个问题?

谢谢

【问题讨论】:

  • 我认为您必须摆脱默认的关闭按钮并添加自己的关闭按钮,并将您自己的处理程序附加到该按钮。
  • 是否必须使用.dialog() 完成,或者您可以将点击处理程序添加到X 吗?
  • @4castle 只能使用 .dialog 来完成

标签: javascript jquery html modal-dialog


【解决方案1】:

close() 回调将传递一个事件对象,该对象包含一个 .currentTarget 属性,表示被按下的按钮。您可以使用它来找出单击了哪个按钮。例如,尝试类似

$("#dialog").dialog({
close: function(event,ui) {
  if($(event.currentTarget).hasClass('ui-dialog-titlebar-close')
  {
     alert('close');
  }
}

您也可以尝试直接在 X 按钮上直接创建一个 on("click") 函数,但这可能有点不稳定。

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2010-09-13
    • 1970-01-01
    • 2020-01-17
    • 2011-02-17
    相关资源
    最近更新 更多