我在表行上有两个事件绑定(bind),一个用于焦点
,这样我就可以在文本输入更改之前获取它的值。然后我将 .change 事件绑定(bind)到该事件,这样我就可以在仍然具有以前的值的同时处理它。
但是,在 .change 函数中,“this”现在是正在更改的输入的表,而不再是输入元素本身。我在这里做错了什么?
(function() {
var previousName;
$(".RowClassName").on("focus", ".columnClassName td:first-child input", function() {
previousName = this.value;
}).change(function() {
$(this).width($(this).val().length * 9);
UpdateList(previousName, this.value);
});
})();
最佳答案
为什么this
引用该表已在其他答案中解释过。
为了避免重复选择器,您可以存储在变量中或 pass an object事件处理程序的数量:
(function() {
var previousName;
$(".RowClassName").on(
{
focus: function() {
previousName = this.value;
},
change: function() {
$(this).width($(this).val().length * 9);
UpdateList(previousName, this.value);
}
},
'.columnClassName td:first-child input'
);
}());
关于javascript - 组合绑定(bind)事件而不丢失上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31571264/