【问题标题】:jQuery nesting $(this) fail inside complete functionjQuery嵌套$(this)在完整函数中失败
【发布时间】:2015-11-18 11:08:03
【问题描述】:

我有一个使用 JSON 的翻译功能

var json = $.getJSON("localization/translate.json", function (word) {
    $.each(word, function () {
        data = this;
        $(".translate").each(function (i, el) {
            var translation = $(el).attr("data-translate");
            if (translation === data.en) {
                $(el).fadeTo(500, 0, function () {
                    $(el).delay(600).html(data.en).fadeTo(500, 1);
                });
            }
        });
    });
});

data里面的fadTo(function(data))只显示json中最后一个数据值,而不是每个json值的值。

如果我这样做了

if(translation===data.en) {
    $(el).fadeTo(500, 0, function() {
            // move it to outside of this function.                             
    });
    $(el).html(data.en);
    $(el).fadeTo(500, 1);
}

这没关系,但它会在它完全淡入透明之前触发 html 文本更改。

【问题讨论】:

    标签: javascript jquery json each


    【解决方案1】:
    var data = this;
    

    使用局部变量,而不是全局变量,那么您可能会看到局部结果而不是全局结果;)

    【讨论】:

    • 谢谢,我一直认为var声明不重要。
    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2011-01-18
    • 2012-03-27
    • 2015-05-24
    • 2010-12-16
    • 2017-01-28
    相关资源
    最近更新 更多