javascript - Jquery覆盖我的对象中的 "this"

标签 javascript jquery

它是 How to access the correct `this` context inside a callback? 的重复项,但是根据我的问题描述,我在这里找不到它。很多人可能都有同样的问题。

我有一个像这样的对象:

var my_object = new function() {

    this.function2 = function() {
        $("#button").click(function() {
           this.function1()
        })
    };

    this.function1 = function() {
    };

}

a = my_object()

如果我点击#button,就会发生这种情况

this.function1 is not a function

如何正确解决这个问题?如何防止jquery覆盖我的“this”?

最佳答案

存储对 this 的引用以避免混淆和上下文问题。

在事件处理程序中this是完全不同的东西..它是一个dom节点

var my_object = new function() {
    var self = this; // reference to `my_object`

    self.function2 = function() {
        $("#button").click(function() {
           // "this" is dom element returned by jQuery event handler
           // but "self" is already a stored reference to `my_object`
           self.function1()
           $(this).css('color','red')
        })
    };

    self.function1 = function() {
    };

}

关于javascript - Jquery覆盖我的对象中的 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209499/

相关文章:

javascript - getElementById 和 Document.write 的替代方法

javascript - 下拉列表中的多项操作

javascript - 浏览器调整大小后 CropperJS 不正确缩放 Canvas

javascript - 如何在 HighCharts 中设置多个 xAxis.labels.align?

javascript - jQuery 1.9 .live() 不是函数

javascript - 当选中单选按钮时将类添加到父 div 并在选中其他单选按钮时删除类

jquery - 如何使用 JQuery 根据特定条件附加组件的 Id?

javascript - 我想要输入文本元素中的实时更改事件

javascript - Chrome 扩展(内容脚本)- 在字符串中的特定位置添加按钮

javascript - Angular 范围共享范围从表格行到模态