2012-03-25 78 views
1

我正在尝试编写一个jQuery插件来自动填充选择框,但我在使用“each”函数中的this关键字时遇到了麻烦。代码如下:jquery插件中“this”元素的作用域

(function($) { 
    $.fn.addOptionsTable2 = function() {   
    options = { 
      values : text [...] 
     }; 
     $.each(options, function(val,text) { 
      this.append(
       $('<option></option>').val(val).html(text) 
     ); 
    }); 
    } 
})(jQuery); 

这似乎不工作,我相信问题是“这个”的参考。 我如何使这项工作,以及“我的代码”中提到的是什么?

回答

3

$.eachthis设置为当前对象(用于循环)。

试试这个:

var that = this; 

    $.each(options, function(val,text) { 
     that.append(
      $('<option></option>').val(val).html(text) 
    ); 
+1

我是在回答完全一样的,但是我太迟钝 – Alp 2012-03-25 22:18:35

+0

我同意,在'那= this'的解决方案是在这些情况非常普遍。 – 2012-03-25 22:19:21

+0

我更喜欢'自我',但是......同样的事情。重要的是要明白'this'是* special *并且为每个函数对象调用设置。 (具体设置可能会有所不同。) – 2012-03-25 22:20:37