如何在 dragStop 事件中获取 jquery 对话框位置
How to get jquery dialog position on dragStop event
在我的应用程序中,我有如下要求:
当用户单击菜单项时,默认情况下会在浏览器的左上角打开一个 jquery 对话框。如果用户将对话框拖到 window 上的某个位置并打开另一个菜单项,该对话框会自动放置在页面的左上角。但是,我想在先前对话框拖动停止的位置显示新项目单击对话框。为此,我尝试在对话框的 dragstop 事件中保存左侧和顶部位置值,但是,它在对话框拖动后不显示顶部和左侧值,而是显示默认的左上角值。
我的代码:
$("#modalDiv").dialog({
position: {
my: "left top",
at: "left top+122",
of: "body"
},
beforeClose: function(event, ui) {
alert('Firing close- top:' + $(this).position().top + " left:" + $(this).position().left);
},
dragStop: function(event, ui) {
//This alert message should show latest top left postion values of jquery dialog box it is showing default top left values even after drag event finished?
//alert('Firing close- top:' + $(this).position().top + " left:" + $(this).position().left);
}
}).dialog("open").parent().appendTo(jQuery('form:first')).find('.ui-dialog-title').html('<span>' + titleStr + '</span>');
感谢任何解决问题的帮助。
提前致谢。
当您创建对话框时,jQuery 在内部使用 div
元素表示它。您可以观察 div 的 属性 aria-describedby
,因为它包含与对话框相同的 ID,并获取其位置:
$("[aria-describedby= modalDiv]").position();
在我的应用程序中,我有如下要求: 当用户单击菜单项时,默认情况下会在浏览器的左上角打开一个 jquery 对话框。如果用户将对话框拖到 window 上的某个位置并打开另一个菜单项,该对话框会自动放置在页面的左上角。但是,我想在先前对话框拖动停止的位置显示新项目单击对话框。为此,我尝试在对话框的 dragstop 事件中保存左侧和顶部位置值,但是,它在对话框拖动后不显示顶部和左侧值,而是显示默认的左上角值。 我的代码:
$("#modalDiv").dialog({
position: {
my: "left top",
at: "left top+122",
of: "body"
},
beforeClose: function(event, ui) {
alert('Firing close- top:' + $(this).position().top + " left:" + $(this).position().left);
},
dragStop: function(event, ui) {
//This alert message should show latest top left postion values of jquery dialog box it is showing default top left values even after drag event finished?
//alert('Firing close- top:' + $(this).position().top + " left:" + $(this).position().left);
}
}).dialog("open").parent().appendTo(jQuery('form:first')).find('.ui-dialog-title').html('<span>' + titleStr + '</span>');
感谢任何解决问题的帮助。
提前致谢。
当您创建对话框时,jQuery 在内部使用 div
元素表示它。您可以观察 div 的 属性 aria-describedby
,因为它包含与对话框相同的 ID,并获取其位置:
$("[aria-describedby= modalDiv]").position();