0

如何访问函数this.today内部Moved?它将通过调用,jQuery因此this关键字将被 jQuery 覆盖为 jQuery 对象或 DOM 元素。

这是与我所拥有的类似的东西:

(function(Map) {
    Map.Timeline = {
        today: null,

        Init: function () {
            jQuery("#timeline").mousemove(Map.Timeline.Moved); // or this.Moved
        },

        Moved: function (event) {
            console.log(this);                  // jQuery Object or DOM element
            console.log(this.today);            // fails
            console.log(Map.Timeline.today);    // works fine
        },

        // more code here ...
4

2 回答 2

7

使用jQuery.proxy()在回调调用中使用自定义上下文

jQuery('#timeline').mousemove(jQuery.proxy(Map.Timeline.Moved, this));
于 2013-04-21T10:11:46.637 回答
1

您可以在它被覆盖之前存储它:

(function(Map) {
var myvar = $(this);
Map.Timeline = {
    today: null,


    Init: function () {
        jQuery("#timeline").mousemove(Map.Timeline.Moved); // or this.Moved
    },

    Moved: function (event) {
        console.log(myvar);                  // jQuery Object or DOM element
        console.log(myvar.today);            // fails
        console.log(Map.Timeline.today);    // works fine
    },

    // more code here ...
于 2013-04-21T10:11:42.563 回答