得到他的代码,简单的任务:
1.单击列表项 2.get列表项值 输入输入 4.手动更改它们 5.按klick
将它们保存回列表项点击多个列表项并保存后,这些值也会针对之前已被点击的所有列表项进行更改。
似乎“_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() );
});
};
答案 0 :(得分:1)
每次编辑(_this)时都会调用你绑定一个新的委托,然后让这个方法调用3次...下次你按'#save'你会得到三个不同的委托调用。 要解决此问题,您可以添加一个变量来获取_this值并保留它:
var _thisglobal='';
从编辑(_this)中取出biding函数并使用全局值_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() );
});