簡體   English   中英

JavaScript / jQuery上下文 - 代理?

[英]JavaScript/jQuery context - proxy?

我必須以同步方式動畫元素(即等到動畫(本例中為fadeIn())完成,所以我可以繼續)。

據我所知,我有三個選擇:

doSomething: function () {
    $('.someElement').fadeIn(function () {
        // do something else here...
    });
}

另一種方法(使用$ .proxy()來改變上下文):

doSomething: function () {
    $('.someElement').fadeIn($.proxy(function () {
        this.doSomethingElse();
    }, this));
},

doSomethingElse: function () {
    // ...
}

但是,因為使用$ .proxy()有點“混合”上下文而我真的不喜歡這個(因為我只是不知道什么時候它會回來並咬掉我的屁股),我有時會使用這個做法:

doSomething: function () {
    $('.someElement').fadeIn(function () {
        doSomethingElse();
    });

    function doSomethingElse () {
        // ...
    }
}

現在我想知道,還有更好的方法嗎? 更簡單,更優雅的東西。 喜歡:

doSomething: function () {
    $('.someElement').fadeIn(function () {
        // do this in an async way...
    });

    // simply do something else here...
}

這個問題確實讓我感到困惑,因為我喜歡干凈的代碼,我不喜歡這種簡單但不干凈的解決方案。

創建一個調解變量來引用您的原始對象:

doSomething: function () {
    var that = this;
    $('.someElement').fadeIn(function() {
       // use "that" here
    });
}

如果doSomethingElse()是另一個動畫,您可以鏈接和排隊它們保持原始上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM