-2

私はjqgridを使用しており、ポップアップを追加、削除、編集するようにフォーカスするには、beforeShowFormこのショーウィンドウの前に画面の中央を表示するパラメーターを使用する必要があります。問題は、これら 3 つの関数に対して常に同じコードを実行する必要があることです。

機能は次のとおりです。

{ // 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 が定義されていないことを示します。これを解決する方法を知っている人はいますか?

4

1 に答える 1

0

問題は、ここで使用するセレクターにあります。

var dlgDiv = $("#editmod" + $(this)[0].id);

セレクターがそれを見つけることができないため、取得しようとしている要素は返されません。検索しようとしている要素の ID を反映するようにセレクターを修正する必要があります。

それを行ってもまだ問題がある場合、問題はコンテキストにありthis、上記のコード行で考えている意味とは異なります。ただし、詳しく説明する前に、さらに多くのコードを示す必要があります。

于 2013-02-06T00:48:04.100 に答える