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()で操作対象のエレメントを元の位置に保つ