私が作成しているデータ ツールには、 と の 2 つの関数がshowEditDv(object)
ありeditDv(object)
ます。まだ推測していない場合Dv
は、Data Value の略です。showEditDv
データの編集アイコンをクリックすると呼び出されます。データを編集できるようにするOpentipツールチップを生成showEditDv(this);
し、onclick 属性で次のように呼び出します。その関数のコードは次のとおりです (いいえ、実際にはインライン コメントはありません)。
function showEditDv(object) {
var name = $(object).attr("data-name"); // string(name) now holds the name of the data value
var input = new Opentip($(object), {target: null, showOn: null, hideTrigger: "closeButton"});
input.setContent("<label>Name:</label><input type='text' value='" + name + "' class='dv-add-name' /><label>Value:</label>input type='text' class='dv-add-value' value='" + data[name] + "' /><button onclick='editDv(" + $(object) /*<-- problem */ + ");'>Apply</button>");
input.show();
}
editDv()
関数が「適用」ボタンによって呼び出されると、問題が発生します。オブジェクトは文字列で参照されているため (私が思うに!)、オブジェクト参照は として出力され、参照[object Object]
がないため、関数は Opentip を非表示にできません。のコードは次のeditDv()
とおりです。
function editDv(object) {
var input = $(object).data("opentips")[0]; // data("opentips") is an array of objects
input.hide();
}
だから私の質問は次のとおりです。input
オブジェクトをshowEditDv
引数editDv
として渡すにはどうすればよいですか、またはこれを完全に行うためのより良い方法はありますか?