Получил его код, легкая задача:
1.Щелкните элемент списка 2.get элементов списка 3.put во входе 4. замените их вручную 5. Сохраните их обратно в элемент списка за клик
После нажатия нескольких элементов списка и сохранения их значения также изменяются для всех элементов списка, которые были ранее добавлены.
Кажется, что "_this" сохраняет все соединения.
Любая идея, как сделать эту работу? Большое спасибо!
<ul id="foo">
<li>
<a href="#" class="bar"></a>
<span class="name">Name1</span>
</li>
<li>
<a href="#" class="bar"></a>
<span class="name">Name2</span>
</li>
<li>
<a href="#" class="bar"></a>
<span class="name">Name3</span>
</li>
</ul>
<input id="editName">
<a id="save"></a>
$("#foo").on('click', '.bar', function() {
_this = $(this);
edit(_this);
});
function edit(_this) {
var name = _this.parent().children(".name").text();
$("#editName").val(name);
$("#save").click( function() {
_this.parent().find(".name").text( $("#edit input#editName").val() );
});
};
каждый раз, когда вы редактируете (_this), вы связываете нового делегата и после того, как скажете, что 3 раза этот метод вызывается... В следующий раз, когда вы нажмете "#save", вы получите три разных вызова этого делегата. для этого вы можете добавить переменную, которая получит значение this и удерживает его:
var _thisglobal='';
выйдите из функции biding (_this) и используйте глобальное значение _thisglobal вместо _this:
function edit(_this) {
_thisglobal=_this;
var name = _this.parent().children(".name").text();
$("#editName").val(name);
};
$("#save").click( function() {
_thisglobal.parent().find(".name").text( $("#edit input#editName").val() );
});
.name