如何创建将窗口居中的函数
How to create a function to center windows
我使用的是jqgrid,要集中弹出窗口来添加、删除和编辑,我需要使用参数beforeShowForm
,在这个显示窗口之前,它显示屏幕的中心。问题是,我必须始终为这三个函数执行相同的代码。
功能如下:
{ // edit option
beforeShowForm: function(form) {
var dlgDiv = $("#editmod" + $(this)[0].id);
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
var parentTop = parentDiv.offset().top;
var parentLeft = parentDiv.offset().left;
dlgDiv[0].style.top = Math.round(parentTop / 2) + "px";
dlgDiv[0].style.left = Math.round(parentLeft + (parentWidth-dlgWidth )/2 ) + "px";
}
},
为了重用相同的代码,我会创建一个单独的函数来始终编写相同数量的代码。我尝试创建以下函数:
功能:
function test(dlgDiv)
{
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
var parentTop = parentDiv.offset().top;
var parentLeft = parentDiv.offset().left;
dlgDiv[0].style.top = Math.round(parentTop / 2) + "px";
dlgDiv[0].style.left = Math.round(parentLeft + (parentWidth-dlgWidth )/2 ) + "px";
}
网格中:
{ // edit option
beforeShowForm: function(form) {
var dlgDiv = $("#editmod" + $(this)[0].id);
test(dlgDiv);
}
},
但是继续没有给予。表示未定义值dlgDiv。有人知道怎么解决这个问题吗?
问题在于您在这里使用的选择器:
var dlgDiv = $("#editmod" + $(this)[0].id);
由于选择器找不到您要获取的任何元素,因此都不会返回。您应该修改选择器以反映您要查找的元素的ID。
如果你已经这样做了,但仍然有问题,问题在于你的上下文,this
并不是你认为它在上面代码行中的意思。不过,在我详细说明之前,您必须向我们展示更多的代码。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 基于窗口宽度jquery的函数的替代方法是什么
- 允许父窗口在其不同域的子iframe上调用函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- jQuery调整大小函数只适用于窗口
- JavaScript 中的窗口函数说明
- 如何重命名本机窗口函数,以便我可以删除两行
- Javascript 窗口函数将“this”作为参数传递
- 调用父窗口中的子窗口函数时出错
- 窗口对象、窗口函数和对象函数
- php&javascript打开窗口函数
- 如何使用窗口[函数名称]引用非全局函数
- 窗口函数中的一个变量.未正确设置Onload
- 窗口函数指针在JavaScript中不工作
- 如何从子窗口调用父窗口函数
- V8 / JS运行时:如何使用没有前缀"window"的JavaScript窗口函数
- 获取窗口函数在本地分配变量
- 调用子窗口javascript中的父窗口函数
- 使用javascript窗口函数的动态SVG背景
- 如何在 javascript 中的子窗口关闭时调用父窗口函数