この時点まで、私はJavaScriptをあまり使っていません。私は最近jQueryで遊んで始め、フォーム上でEdit in Placeを実行する方法に関するチュートリアルを見つけました。jQuery/javascriptオブジェクトの受け渡し
関数内でコンテナdivのIDをハードコードすると、結果のコードは完全に機能しますが、関数に渡されたIDに対して一般化する問題があります。
コードは次のように起動します:
$(document).ready(function() {
setClickable($('#editInPlace'));
});
function setClickable(target)
{
$(target).click
(
function()
{
//Do some dom manipulation
$('.buttonA').click(function() { saveChanges(this, false); });
$('.buttonB').click(function() { saveChanges(this, true); });
}
)
.mouseover(function() { $(this).addClass("editable"); })
.mouseout(function() { $(this).removeClass("editable"); });
}; //end of function setClickable
function saveChanges(obj, cancel)
{
//Handle the save changes code
//Reset the div
$(obj).parent().after('<div id="editInPlace">' + t + '</div>').remove();
//Call setClickable
setClickable($('#editInPlace'));
}
私は問題を抱えている部分がsaveChanges
機能のsetClickable
内部への最後の呼び出しです。 $('#editInPlace')
の値をハードコードすると正常に動作します。しかし、私は
function saveChanges(target, obj, cancel)
に関数のシグネチャを変更し、setClickable方法からターゲットオブジェクトに渡す場合:
$('.buttonB').click(function() { saveChanges(target, this, true); });
setClickable(target);
を呼び出す
が動作していないよう とI理由を理解できません。
Jeditableプラグインhttp://www.appelsiini.net/projects/jeditableまたは編集可能なプラグインhttp://arashkarimzadeh.com/index.php/jquery/7-editable-jqueryを参照してください。 -plugin.html。 – tvanfosson