2012-03-25 75 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