使いやすいセレクトボックスを実装できる jqselectable.js
3年くらい前に最初のバージョンを作ったjQselectableをほぼ全て書き直しました。書きなおす流れで以前のものと互換性がなくなってしまったので、新しいものとして公開します。
使い方
実行する前に
ファイルをgithubからダウンロードして、CSS/JSファイルを読み込んでおきます。
jQueryプラグインなので、jQueryも読みこんでおきます。推奨は一応最新バージョンです。
CSSは jqselectable/style の中に
- selectable
- natural
- xp
と3つ入っているので好きなものを選んでください。自分で書いても大丈夫です。そのときはgithubからpullリクエストください。
実行する
ready関数は必要に応じて使ってください。
jQuery(function($){ $(selector).jQselectable(); });
実行時に渡しているオプションについては次項で解説しています。
オプション
オプションを使う場合は、実行時の引数にハッシュで渡します。
$(selector).jQselectable({ show: "fadeIn", showDuration: "fast", opacity: .9 });
オプション | 解説 |
---|---|
style | simple を指定すると普通のプルダウンになります |
show | 表示メソッド: show, fadeIn, slideDown |
hide | 非表示メソッド: hide, fadeOut, slideUp |
showDuration | 表示メソッドがshow以外のときにかける時間 |
hideDuration | 非表示メソッドがhide以外のときにかける時間 |
height | styleがsimpleのときに高さを指定する(px不要) |
opacity | プルダウンの透過度 |
API
APIを使う場合は、jQselectable実行時の引数を任意の変数から参照できるようにしておきます。また、この場合、適用する要素はひとつにしてください。2つ以上ある場合はちょっと面倒くさいです。以下ひとつのものベースに解説しています。
var jqs = $(selector).jQselectable();
変数から参照できる状態であれば、いつでもAPIを利用できます。とりあえずAPI一覧は以下の通りです。
API | 解説 |
---|---|
enable | 実行した要素を利用可能にする |
disable | 実行した要素を利用不可にする |
refresh | 実行した要素のオプションが増減した場合など、refreshメソッドを実行すると中身をリロードできます。動的に何かする際に使ってください |
destroy | jQselectableを破棄します |
enable, disable, destroy
サンプルコードままですが、ボタンをクリックすると使えるようにしたり使えなくします。
var $jqs = $("#triggerbind").jQselectable({ style: "simple", height: 150, opacity: .9 }); $('#disabled').click(function() { $jqs.jQselectable('disable'); }); $('#enabled').click(function() { $jqs.jQselectable('enable'); }); $('#destroy').click(function() { $jqs.jQselectable('destroy'); });
refresh
これもサンプルコードままですが、addボタンをクリックすると元のselect要素にoptionを追加して、その変更をjQselectableへ反映します。
// 実行部分は省略 $('#add').click(function() { $('#refresh').append(''); $jqs.jQselectable('refresh'); });
jQselectable.change イベント
以前はコールバック関数を呼べるようにしていたのですが、廃止して、イベントから呼べるように変更しました。
var $jqs = $("#triggerbind").jQselectable({ style: "simple", height: 150, opacity: .9 }); // trigger bind $jqs.bind('jQselectable.change', function(ev, data) { location.href = data.value; });
オプションのvalueを元にページ遷移などしたい場合は、この方法で行います。jQselectableオブジェクトに jQselectable.change イベントを bind すると任意の処理を行えます。サンプルに書いていますが、2つ目の引数(data)に value というプロパティがあり、ここに選択した項目の value が入っています。
何かあれば
それにしても3年ってそんなに経ってしまったんですね・・・
github repository
Leave a comment
If you have bug tickets or nice idea, please post that at github repository issues, thx. バグや要望などはgithubのIssuesでください ;)
Trackbacks: 0
- Trackback URL for this entry
- Listed below are links to weblogs that reference
- 使いやすいセレクトボックスを実装できる jqselectable.js from 5509
Comments: 4 - Leave a comment
便利に使わせていただいています。
どうもありがとうございます。
ひとつきになることがありまして、
セレクトウィンドウが開いたときその右端にスクロールバーが表示されてしまいます。( chrome, IE 等)
ソースを見させていただいたのですが、IE6対応のための記述の中で
————————-
self.has_no_maxheight = typeof document.body.style.maxHeight;
…
// for IE6
if ( self.has_no_maxheight ) {
body_style = ‘height: ‘ + height + ‘; overflow-y: scroll;’;
}
————————-
ここなのですがifの真偽が逆になっているのではないかと思いました。
若輩者なので解釈が間違っているかもしれませんが、
もしよろしければ、確認して頂ければ幸いです。
素晴らしいライブラリありがとうございます。
フォントサイズ変更にはまりました。
記事書いときました。
今後とも宜しくお願いします!
こんにちは。
とても使いやすくてかっこいいです。
ありがたく使わせて頂いております。
都道府県の選択で、一覧画面に表示させずに初期値として「都道府県を選択してください」という項目を追加することは可能でしょうか?
それは仕様にないのでできないですね・・・
要望で入れておきます!