【发布时间】:2013-02-05 17:55:53
【问题描述】:
我使用的是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。有谁知道如何解决这个问题?
【问题讨论】:
-
这是什么恐怖?
$(this)[0].id?为什么不直接使用this.id??? -
如果你给了我们完整的错误信息,或者至少是哪一行抛出了它。
-
@Kolink 因为我调用了网格的第一个参数 ;)
-
@gdoron 我会编辑以更好地理解
标签: javascript jqgrid