在jQuery中访问javascript原生“this”

时间:2013-04-21 10:07:35

标签: javascript jquery oop scope

如何访问this.today函数内的Moved?它将通过jQuery调用,因此jQuery将覆盖this关键字到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 ...

2 个答案:

答案 0 :(得分:7)

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

jQuery('#timeline').mousemove(jQuery.proxy(Map.Timeline.Moved, this));

答案 1 :(得分: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 ...