javascript - 组合绑定(bind)事件而不丢失上下文

标签 javascript jquery html

我在表行上有两个事件绑定(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/

相关文章:

javascript - 如何在元素悬停时为另一个元素设置动画?

javascript - 将 CSS 应用于 printWindow.print();在 JavaScript 中

javascript - 一个按钮触发另一个按钮的点击事件

javascript - 如何根据输入的小时添加 PM 或 AM?

javascript - 如何使用 jQuery 从 Ruby on Rails 应用程序中的 select 返回值 "form"?

javascript - 了解函数中 mouseenter 链接的类

html - 为 IE7 拉伸(stretch) div 背景图像

javascript - 如何在react-native中动态加载模块?

javascript - Qtip2 工具提示不定位

javascript - 调试慢速 jQuery 代码