Демо: http://jsfiddle.net/QZMP6/23/
Если вы измените это:
//Make current html content editable
$("#"+currentClickedDIV).html("<INPUT id='currentInput' value='"+currentClickedDIVContent+"'></INPUT>");
на это:
//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);