jQuery - 触发器不会产生预期的结果

时间:2014-12-25 11:58:43

标签: javascript jquery

在我的应用中,当页面加载时,我会为3件事启动init功能,

  1. 触发并发送页面号。 (我想将页面默认值设为1)

  2. 触发完成后,我想听到,所以我正在聆听

  3. 再次
  4. ,用户可以插入/编辑页码(文本框),这样我就可以添加一个监听器来运行。

  5. 但是当函数开始时我正在安慰一个对象,但我得到的结果为undifined

    这里有什么问题:

    var docLoader = function (params) {
    
        window.container = window.container || $("#tenderContent");
    
        return {
            init : function () {
                this.cachePages = {};
                $(document).on("newMessage", this.onPageChange);
                $.event.trigger({
                    type: "newMessage"
                });
            },
    
            onPageChange : function (e) {
                console.log(this.cachePages) //undefined why?
            }
        }
    }
    

    html页面:

    <script>
        docLoader().init();
    </script>
    

    我是解除分离方法的新手,有人帮我详细说明了吗?

1 个答案:

答案 0 :(得分:2)

这是因为你丢失了this上下文。 jQuery将DOM元素作为上下文传递,而不是原始上下文。

您需要将函数的上下文绑定到现有的this

$(document).on("newMessage", this.onPageChange.bind(this));