2012-06-19 20 views
7

Tôi đang sử dụng ColorPicker Plugin. tôi khởi tạo các plugin với đoạn mã sau:

$(".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 
    } 
}); 

Bây giờ vấn đề của tôi là $(this) không hoạt động trong onchange sự kiện. Giúp tôi ra ngoài?

+0

có lẽ bạn cần phải 'ràng buộc this' cho 'onChange'? – tkone

+1

Có thể plugin không chuyển ngữ cảnh của nó sang phương thức 'onChange'. Mở một vấn đề :) – Terry

Trả lời

9

Hãy thử như thế này:

$(".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

cảm ơn câu trả lời –

3

this là một vấn đề thực sự lớn, vì trong trường hợp này, this sẽ chuyển sang hàm nếu tôi không nhầm. Hãy thử như sau:

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