デモ:これに
//Make current html content editable
$("#"+currentClickedDIV).html("<INPUT id='currentInput' value='"+currentClickedDIVContent+"'></INPUT>");
:あなたはこれを変更した場合http://jsfiddle.net/QZMP6/23/
//Make current html content editable
$("#"+currentClickedDIV).html("<INPUT id='currentInput' value='"+currentClickedDIVContent+"'></INPUT>").children().on('blur', function() {
$('#' + currentClickedDIV).off('click').on('click', external_click);
});
イベントハンドラは、入力要素の後に再接続されますが、blur
編です。また、あなたのコードをexternal_click
という名前の外部関数に移動しました。上記のデモのコードは次のとおりです。
function external_click() {
var currentClickedDIV = this.id;
$('#output').append("Clicked: "+currentClickedDIV +"<BR>");
var currentClickedDIVContent = $(this).html();
$('#output').append("HTML: "+currentClickedDIVContent +"<BR>");
//Make current html content editable
$("#"+currentClickedDIV).html("<INPUT id='currentInput' value='"+currentClickedDIVContent+"'></INPUT>").children().on('blur', function() {
$('#' + currentClickedDIV).off('click').on('click', external_click);
});
//Focus cursor on input
$("#currentInput").focus();
//On blur replace with plain html, also reenable click?
$("#currentInput").blur(function(){
var currInput = $("#currentInput").val();
$("#"+currentClickedDIV).html(currInput);
$('#output').append("New HTML: "+ currInput +"<BR>");
});
//prevent more triggers within element
console.log($(this));
$(this).off("click").on("click", function (e) {
e.stopPropagation();
});
return false;
}
$('.cuboid').on('click', external_click);
あなたは/無効のハンドラを有効にしたい場合は、[私が与えた答え]をご覧ください(のhttp:/あなただけのその変数名でクリックハンドラでそれを参照することができますこの方法/stackoverflow.com/a/9103128/1106925)を以前の質問に追加します。この手法を使用すると、クラスを追加/削除するのと同じくらい簡単です。 –