将$(this)选择器传递给嵌套函数

Jam*_*mie 4 javascript jquery

所以我有一个脚本,需要通过类名称的PDIV级中的每个标记,entry-content并使用google翻译API翻译每个标记.

因此,当用户单击链接以将页面从英语翻译为西班牙语时,将运行以下函数:

function spanish() {
$(".entry-content p").each(function(){
      var text = $(this).html();
        google.language.detect(text, function(result) {
          google.language.translate(text, "en", "es", function(result) {
           if (result.translation) {
                alert($(this).html());  //outputs NULL
                $(this).html(result.translation); //doesn't work
            }
          });
        });
      });
}
Run Code Online (Sandbox Code Playgroud)

问题是当iIget到内部函数$(this).html()回复NULL并且我无法更改当前元素html以便将其更改为新的翻译文本.

所以我想我的问题是:如何将当前选中的元素传递给嵌套函数?

谢谢

Dav*_*und 6

您可以将其存储在本地变量中

this始终与调用函数的上下文相关.在您的示例中,您将函数传递给google.language.translate,因此可能是google.language.translate调用该函数.

但是,如果你存储的值$(this)时,它是你的p,你就可以使用该变量从回调函数.

function spanish() {
    $(".entry-content p").each(function(){
      var $this = $(this);
      var text = $this.html();
        google.language.detect(text, function(result) {
          google.language.translate(text, "en", "es", function(result) {
           if (result.translation) {
                alert($this.html());  //outputs NULL
                $this.html(result.translation); //doesn't work
            }
          });
        });
      });
}
Run Code Online (Sandbox Code Playgroud)