jqGridを使用してページにカスタムインライン入力ウィジェットを作成しています。jqGridカスタム入力要素で親テーブルへのハンドルが必要
colModel:[ {
// Other columns removed.
{name:'ship',index:'ship', width:90, editable: true, sortable: false,
edittype: "custom",
editoptions:{ custom_element: customElement,
custom_value: customValue} }
],
そして、私のコールバック関数は次のとおりです:jqjGridセットアップの関連する部分はある
function customElement(value, options) {
var a = $("<input>").attr({
type: 'text',
size: 2,
value: value,
style: 'float: left'
}).add(
$("<span>").attr({
style: 'float: left; margin-top: 2px;',
'class': 'ui-icon ui-icon-search'
}).click(function() {
// My custom function here.
})
).appendTo($("<div>"));
return a;
}
このすべてが正常に動作します。
しかし、私はページ上のいくつかのjqgridテーブルを管理するライブラリを構築しています。私はそれらのテーブルのいくつかのカスタム要素を構築するために同じ関数を使用したいと思います。問題は、この特定のclick()
関数が、どのjqueryテーブルを扱っているかを知る必要があることです。
私はcustomElement
の先頭にハック方法を通じて、テーブルIDを取得し、関数にクロージャにそれを渡すことができます:
var fieldID = options.id;
var rowID = fieldID.replace(/_.*/, "");
var containingTable = $("#" + rowID + "_id").closest("table");
しかし、これは、列「ID」は、現在のjqGridに存在することを前提としてい、それはより早い(左に)列です。まだ作成されていないので、「船」列は使用できません。私は、テーブルに "船"列を持っている他の行があると仮定することはできません。
私は、custom_elementハンドラで確実に "呼び出し元"テーブルのハンドルを取得できますか?