2012-06-19 32 views
7

我使用ColorPicker Plugin.我初始化下面的代碼插件:

$(".colorpic").ColorPicker({ 
    color: '#0000ff', 
    onShow: function (colpkr) { 
     $(colpkr).fadeIn(500); 
     return false; 
    }, 
    onHide: function (colpkr) { 
     $(colpkr).fadeOut(500); 
     return false; 
    }, 
    onChange: function (hsb, hex, rgb) { 
     $(this).css('backgroundColor', '#' + hex); <= $(this) not working 
    } 
}); 

現在我的問題是,$(this)onchange事件工作。請幫我嗎?

+0

也許你需要'綁定this'爲'onChange'? – tkone

+1

插件不會將其上下文傳遞給'onChange'方法。打開一個問題:) – Terry

回答

9

嘗試這樣的:

$(".colorpic").each(function(){ 
    var $this = $(this); 

    $this.ColorPicker({ 
     color: '#0000ff', 
     onShow: function (colpkr) { 
      $(colpkr).fadeIn(500); 
      return false; 
     }, 
     onHide: function (colpkr) { 
      $(colpkr).fadeOut(500); 
      return false; 
     }, 
     onChange: function (hsb, hex, rgb) { 
      $this.css('backgroundColor', '#' + hex); 
     } 
    }); 
}); 
+0

感謝您的回答 –

3

this是一個非常大的問題,因爲在這種情況下,如果我沒有弄錯,this會轉到函數。 嘗試以下操作:

var colorPicker=this; 
onChange: function (hsb, hex, rgb) { 
    $(colorPicker).css('backgroundColor', '#' + hex); 
}