我正在使用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的值没有定义。有谁知道如何解决这个问题?
答案 0 :(得分:0)
问题在于你在这里使用的选择器:
var dlgDiv = $("#editmod" + $(this)[0].id);
您要尝试获取的任何元素都不会被返回,因为选择器无法找到它。您应该修改选择器以反映您尝试查找的元素的ID。
如果您已经完成了此操作并且仍然存在问题,则问题在于您的上下文,而this
并不代表您认为在上述代码行中的含义。但是,在我详细说明之前,你必须向我们展示更多代码。