Javascript与'这'参考

Javascript conflict with 'this' reference

本文关键字:参考 Javascript      更新时间:2023-09-26

我有一段javascript代码(使用jQuery),上面写着:

$('.duration').each(function() {
    $(this).html(this.duration_text);
});

它在类"duration"的每个元素上迭代,并根据需要设置文本。问题是,它设置的文本来自一个成员变量,因此产生了this.duration_text。"this"引用被jQuery在迭代中使用的"this"引用所破坏。

如何避免这种碰撞?

尽管答案的基本概念可能与标记为重复的问题完全相同,但我并不清楚这是否是同一个问题。事后看来,当然,但在我自己搜索时,我没有找到它,也不清楚如果我找到了它,那是同一个问题。

您可以在创建循环之前创建对this的引用,然后使用self来引用具有属性duration_text:的对象

var self = this;
$('.duration').each(function() {
    $(this).html(self.duration_text);
});

尽管你可以做:

$('.duration').html(this.duration_text);

您可以使用闭包变量来保存对外部对象的引用

var self = this;
$('.duration').each(function() {
  $(this).html(self.duration_text);
});

但是在给定的代码段中,由于您将相同的内容分配给所有duration元素,因此您可以只使用

$('.duration').html(this.duration_text);