При нажатии на один из
<p class='listFileText'>
правой кнопкой появляется меню с функциями "удалить, переименовать и пр.". При нажатии на "переименовать" вместо текста появляется поле
<input type="text" id="inputNewName">
, в которое вводится текст. И старый текст меняется на новый.
Но если я дважды подряд нажму на
<p class='listFileText'>
, то ничего не работает. Скорее всего, это из-за того, что браузер запоминает все события, которые на него понавешаны. Пробовал исправить через off и preventDefault(), но не помогло
$(document).off('click', 'li#rename');
$(document).on('click', 'li#rename', function(event) {
$(document).off('click');
zamena.replaceWith('<input type="text" id="inputNewName">');
$('#inputNewName').focus(); //делаем фокусировку вручную, потому что autofocus может быть применён только для одного поля на странице
$('#inputNewName').attr('value', text);
$(document).off('click');
$(document).on('click', function(event) {
var newName=document.getElementById('inputNewName').value; //только новое имя
event.preventDefault();
if (identicalName(text)==false && correctName(text)==true) { //имя уникально и корректно
$('#inputNewName').replaceWith('<p class="listFileText" id="last"></p>');
$('#last').text(text);
$('#last').wrap('<div class="child"></div>');
$('#last').removeAttr('id');
}
})
})
};
Как исправить?