0

一般に、jqgrid を次のように呼び出しますが、次$("#grid_loc").jqGrid({});
のようにコンテキストを指定したいと思います$("#grid_loc",context).jqGrid({})
しかし、これは機能していません。誰かがこれを手伝ってくれますか?
オプションを使用してサーバー側のデータをロードする必要がありurlます。
実際、ページにタブがあるため、たまたまこれを持っていました。各タブには、jqgrid が必要です。異なるグリッドではなく、異なるデータを持つ同じグリッドが必要です。

var tabset = $("div.tabset"); newdivid = $("div[class*='active_tab']",tabset).attr("id"); var newmenudivid = $("#"+newdivid);

ここでは、グリッドコード を使用してタブコンテキストを取得しています

$("#grid_workflow", newmenudivid).jqGrid({....});


私はこれを行う方法を見つけようとしています。リンクのコメントセクションで私の努力の一部を見つけることができます 複数のタブで同じjqgridを開発する方法


同じ目的でIDの上書きに成功しました。しかし、それは良い方法ではありません。だから私は別のアプローチを取ることを余儀なくされています。環境

4

1 に答える 1

1

id属性に対応するいくつかの重要なことを誤解していると思います。属性を持つページ上のすべての要素が属性の一意の値をid持つ必要があることが最も重要です。つまり、ID は HTML ページ全体で一意でなければなりません。

たとえば、ツリー タブ内にツリー グリッドを作成する必要がある場合は、グリッドごとに異なるid 属性を定義する必要があります。例えば; grid_workflow1, grid_workflow2, grid_workflow3. タブとグリッドを動的に作成すると、外部スコープに変数 (グローバル変数など) を配置して、変数の値を増やすことができます。プレフィックス ( など"grid_workflow") と変数の値を使用して、グリッドの ID を作成できます。一意の ID を持つ複数のグリッドを作成できる方法です。多くの JavaScript ライブラリは、一意のid属性を生成する方法を使用しています。$.jgrid.randId()IDとして使用できる一意の文字列を返すメソッドを使用できます。

構文があるため、$("#grid_workflow", newmenudivid)重要なことを 1 つ理解する必要があります。絶対に使用しないことをお勧めします。理由はとても簡単です。IDが重複している場合にのみ役立ちます。他のすべての場合、 if will は とまったく同じように動作します$("#grid_workflow")が、ゆっくりと動作します。理由は簡単に理解できます。Web ブラウザーは、ページ上のすべての ID のリストを内部的に保持し、getElementByIdメソッドを直接または間接的に ( で$("#grid_workflow")) 使用する場合、必要な ID を持つ要素の検索は、データベースのインデックスでの検索のようになります。したがって、最高のパフォーマンス結果が得られます。使用する$("#grid_workflow", newmenudivid)と、Web ブラウザーが ID による要素のインデックスを使用することを許可しなくなります。したがって、コンテキストの使用により、検索が遅くなり、すべての子要素がスローされますnewmenudivid. そのため、id セレクターで jQuery コンテキストを使用することは避けてください。

于 2012-10-19T10:55:39.940 に答える