2012-04-03 2 views
1

J'utilise le sélecteur de couleurs jquery suivant sur mon projet: www.eyecon.ro/colorpicker. J'utilise plusieurs colorpickers sur la même page, en appelant le script sur une classe (j'ai 7 entrées sur lesquelles le sélecteur de couleurs est appliqué et aucun d'entre eux n'est lié). Le problème que j'ai est que je ne peux pas accéder au déclencheur car il n'y a aucune relation entre les colorpickers et leurs déclencheurs.
Est-ce que quelqu'un sait comment faire cela? Fondamentalement, je suis en train d'utiliser cette fonctionAccéder au trigger du colorpicker

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

Où $ (ce) devrait être le parent, mais évidemment ce n'est pas.

Répondre

4

Vous devez lier la fonction à un contexte, donc avant d'appeler la fonction, déclare que

var that = this // or whatever this(the context) is 

puis appelez que dans le rappel au lieu de cela.

...)onChange: function (hsb, hex, rgb) { 
    $(that).css('backgroundColor', '#' + hex); 
} 

EDIT: voici le code javascript que j'écrirais.

$(document).ready(function() { 
    $('.colorpickerHolder').each(function(o) { 
     var _this = this; 
     $(this).ColorPicker({ 
      onChange: function(hsb, hex, rgb) { 

       _this.style.background = '#' + hex; 
       // the input which is trigger the colorpicker is supposed to be $(THIS); 
      } 
     }) 
    }) 
});​ 

http://jsfiddle.net/camus/PQDf8/4/

+0

Cela ne semble pas fonctionner. Ici ([link] (http://www.eyecon.ro/colorpicker/#about)) sont quelques exemples et j'essaie d'utiliser le dernier, mais dans l'exemple le trigger est et ID (ce qui le rend unique sur la page), pas une classe. – Seb

+0

Je ne peux pas vous répondre précisément si je ne sais pas ce que votre code est exactement. – mpm

+0

[Voici un exemple] (http://jsfiddle.net/r6vh8/) de mon code. C'est à peu près l'essence de celui-ci :) – Seb