フリップスイッチ
モバイル端末でよく使われる “フリップ” スイッチは、オン/オフや真/偽値を設定するのに便利です。切り替えにはスイッチをスライダーのようにドラッグするか、タップをします。
このコントロールを作るには、オプションを2つ用意した select 要素をスライダーウィジェットとして追加します。最初のオプションは “on” 、次のオプションは “off” としてスタイルされるので、この順番を守ってください。フリップスイッチで指定可能な属性についてはdata属性リファレンスを参照してください。
ラベルは label 要素に for 属性で input 要素のIDを指定することでセマンティックにつなげられます。もしページレイアウト的な理由からラベルを表示したくない場合、ラベルを隠すことも可能です。しかしセマンティックな、そしてアクセシビリティの観点から、かならずラベルを作成するようにしましょう。
このコードにより、次のようなフリップスイッチがつくられます。初期状態で横幅は親要素いっぱいになり、ラベルは他の行に表示されます。
これらをコンテナ要素で囲み、そこに data-role=“fieldcontain” 属性を指定することで、見た目を制御することも可能です。
このコードにより、次のように出力されます。
フリップスイッチのテーマ設定
他のフォーム要素同様に、このウィジェットも親要素のテーマ設定を自動的に継承します。特定のテーマを指定したい場合は select 要素に data-theme 属性にスウォッチを指定します。
このコードにより、ハンドルの色がスウォッチAのものになります。左側の“on“に該当する色は、アクティブステートの色です。
スウォッチEを指定した場合は次のようになります。
プラグインを手動で呼ぶ
このプラグインは select 要素に data-role=“slider” 属性が指定されたものに対して自動的に初期化されます。しかし、他のjQueryプラグイン同様に直接呼び出したい場合は、たとえば次のようにします。
$('select').slider();
オプション
スライダープラグインは、次のようなオプションを持ちます。
-
disabled
string -
default: false
使用不可状態のスライダーを、使用可能にします。
$('.selector').slider({ disabled: "true" });
-
initSelector
CSS selector string -
default: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')"
ここには、自動初期化処理により slider プラグインになるセレクタを定義します。この値を変更するにはmobileinitイベントを使います。
$( document ).bind( "mobileinit", function(){ $.mobile.slider.prototype.options.initSelector = ".myslider"; });
-
theme
string -
default: null, inherited from parent
ウィジェットの色(スウォッチ)を指定します。テーマで定義されたスウォッチをあらわすaからzまでのアルファベットが指定できます。デフォルトでは、個別に設定されない場合、親要素のスウォッチ指定を引き継ぐようになっています。このオプションはdata属性でも次のように表現できます:
data-theme="a"
$('.selector').slider({ theme: "a" });
-
trackTheme
string -
default: null, inherited from parent
スライダーのトラックに適用する色(スウォッチ)を指定します。テーマで定義されたスウォッチをあらわすaからzまでのアルファベットが指定できます。
$('.selector').slider({ theme: "a" });
このオプションは input 要素への data 属性指定でも次のように上書き可能です:
data-track-theme="a"
メソッド
スライダープラグインは、次のようなメソッドを持ちます。
-
enable
使用不可状態のスライダーを使用可能にします。 -
$('.selector').slider('enable');
-
disable
スライダーを使用不可にします。 -
$('.selector').slider('disable');
-
refresh
スライダーをリフレッシュします。 -
JavaScriptでスライダーの値を操作した場合、この refresh メソッドを呼んで見栄えを更新してやる必要があります。
$('.selector').slider('refresh');
イベント
直接 select 要素イベントにバインドしてください。jQuery Mobileによる仮想的なイベント、もしくは change, focus, blur などのような標準的な JavaScriptのイベントにバインドできます。
$( ".selector" ).bind( "change", function(event, ui) {
...
});
スライダープラグインは、次のようなカスタムイベントを持っています。
-
create
スライダーが生成された時に発生します。 -
$( ".selector" ).slider({ create: function(event, ui) { ... } });