jQueryでお薦めのカラーピッカープラグイン
スポンサーリンク
カラーピッカーをサイトに設置する必要ができ、いろいろ調べたのでその結果をメモ。
はじめ、jQuery UIにカラーピッカーがあったと思い込んで探していたのだけど、あれへんやん! ということで、何かいいのはないかなーとこういう10種類のカラーピッカーを紹介しているページとか調べて、最終的に以下のカラーピッカーが一番いいという結論に達した。
ColorPicker – jQuery plugin使い方についてはこちらのサイトで詳しい解説が載っていて、従っていけば困ることはまずないだろう。
jQUeryカラーピッカープラグインの使い方とか – Nullyの日記いいと思った理由はデザインがきれいな点と、色を選んでいるときその結果をリアルタイムに反映してくれる点。html本体にややこしいコードを書き加える必要もないし、これから先、カラーピッカーが必要になったら特に理由がない限りこれを使うと思う。
で、このカラーピッカー、使うときはこんな感じに書くわけですが…
$('#picker').ColorPicker({
flat: true
});
こいつをわけあってこういうコードにしてみたらうまく動かなかった。
$(".picker").ColorPicker({
color : $(this).css("background"),
onChange : function( hsb, hex, rgb ){
$(this).css("background", "#"+ hex)
}
});
一つのページに複数のカラーピッカーを設置する必要があって、classでコードをまとめてしまおうと思ったのだが、どうもセレクタはIDで指定した一意なものでなければならないらしい。ということで、classでセレクタを指定し、引数を$(this)で渡すのは無理だった。
セレクタをIDで指定し、設置するカラーピッカーの数だけコードを書けばそれで解決するのだが、あまり同じコードを書きたくないので、それならと試してみたのが以下のもの。
$(".picker").click(function(){
var obj = "'#" + $(this).attr("id") + "'";
//以下、見やすいように改行しているが、実際には改行なし
var code = "$(" + obj +" ).ColorPicker({
color : $("+obj+").css('background'),
onChange : function( hsb, hex, rgb ){
$("+obj+").css('background','#'+ hex)
}
});";
eval( code );
});
コードを文字列で書いてevalで動かしてみた。classがクリックされたとき、そのidを取得してコードに突っ込んでいるので複数のカラーピッカーを一つのコードで動かすことができる。
しかし当然ながらevalで無理やり動かしているのでもっさり感がある。ということで、一つ一つセレクタにid指定して複数設置する方がいいみたい。
スポンサーリンク
jQueryカテゴリーの投稿
- [jQuery] $.ajaxのコールバック関数にcontextで値を渡す
- [jQuery] 文字列が含まれているかどうかの判定
- [jQuery] rowspanを持つtableで行の表示・非表示を切り替える
- [jQuery] find()とchildren()の使い分け
- jQueryとPHPでAJAX通信を行う
- [jQuery] $('form').change()でフォーム全体の変更を監視する
- [jQuery] 属性が存在するかどうかチェックするコード
- [JS][jQuery] 要素の存在を確認する6通りのコードと実行速度
- [jQuery] tableの内容を取得する
- [jQuery] clone()で操作対象のエレメントを元の位置に保つ