Joh*_*ter 12 jquery dialog jquery-ui
我希望能够检测到被点击的jQuery UI对话的(x)关闭按钮,但我不想使用dialogclose/ dialogbeforecloseevents(因为我相信无论对话框是如何关闭的,它们都会触发).
我试过了$(".ui-dialog-titlebar-close").live("click"),但这似乎不起作用.
我怎样才能做到这一点?
示例代码:(对话框关闭时,调试器不会启动).
<!DOCTYPE html>
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.js"></script>
<script>
$(document).ready(function() {
$("#dialog").dialog();
$(".ui-dialog-titlebar-close").live("click", function() {
debugger; // ** clicking the close button doesn't get to here.**
});
});
</script>
</head>
<div id="dialog" title="Dialog Title">I'm in a dialog</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Kri*_*nov 25
你可以完全按照JAAulde的建议做,或者避免跟踪绑定并使用create事件:
$(document).ready(function() {
$('#dialog').dialog({
create: function() {
$(this).closest('div.ui-dialog')
.find('.ui-dialog-titlebar-close')
.click(function(e) {
alert('hi');
e.preventDefault();
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老问题,OP 说他不想使用 beforeClose,但原因是它总是会触发,即使对于 X 以外的东西也是如此。但是,我注意到这里的技术不允许我防止对话框关闭(如果有未保存的更改,我希望打开一个确认窗口)。如果我们使用这里的技术,使用 beforeClose,我们可以达到预期的结果,但使其可取消。我用了:
beforeClose: function (e, ui) {
if ($(e.currentTarget).hasClass('ui-dialog-titlebar-close') && whateverMyConditionIs)
e.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)
认为它可能会帮助别人!
| 归档时间: |
|
| 查看次数: |
24117 次 |
| 最近记录: |