フリップスイッチ
モバイル端末でよく使われる “フリップ” スイッチは、オン/オフや真/偽値を設定するのに便利です。切り替えにはスイッチをスライダーのようにドラッグするか、タップをします。
このコントロールを作るには、オプションを2つ用意した select 要素をスライダーウィジェットとして追加します。最初のオプションは “on” 、次のオプションは “off” としてスタイルされるので、この順番を守ってください。フリップスイッチで指定可能な属性についてはdata属性リファレンスを参照してください。
ラベルは label 要素に for 属性で input 要素のIDを指定することでセマンティックにつなげられます。もしページレイアウト的な理由からラベルを表示したくない場合、ラベルを隠すことも可能です。しかしセマンティックな、そしてアクセシビリティの観点から、かならずラベルを作成するようにしましょう。
<label for="flip-a">Select slider:</label>
<select name="slider" id="flip-a" data-role="slider">
<option value="off">Off</option>
<option value="on">On</option>
</select>
このコードにより、次のようなフリップスイッチがつくられます。初期状態で横幅は親要素いっぱいになり、ラベルは他の行に表示されます。
長いラベル
コントロールは、横幅指定により自動的に体裁を整えます。より長いラベルを使いたい場合、CSSで適切な幅を指定してください。たとえば、次のようにマークアップします。
<div class="containing-element">
<label for="flip-min">Flip switch:</label>
<select name="slider" id="flip-min" data-role="slider">
<option value="off">Switch Off</option>
<option value="on">Switch On</option>
</select>
</div>
.containing-element .ui-slider-switch { width: 9em }
ミニバージョン
ツールバー内など狭いスペースでは、よりコンパクトな大きさのボタンが便利です。ボタンに data-mini=“true” 属性を追加することで、ミニサイズにできます。
<label for="flip-a">Select slider:</label>
<select name="slider" id="flip-a" data-role="slider" data-mini="true">
<option value="off">Off</option>
<option value="on">On</option>
</select>
フィールドコンテナ
これらをコンテナ要素で囲み、そこに data-role=“fieldcontain” 属性を指定することで、見た目を制御することも可能です。
<div data-role="fieldcontain">
<label for="flip-b">Flip switch:</label>
<select name="slider" id="flip-b" data-role="slider">
<option value="no">No</option>
<option value="yes">Yes</option>
</select>
</div>
このコードにより、次のように出力されます。
<div data-role="fieldcontain">
<div data-role="fieldcontain">
<label for="flip-b">Flip switch:</label>
<select name="slider" id="flip-b" data-role="slider">
<option value="no">No</option>
<option value="yes">Yes</option>
</select>
</div>
</div>
フリップスイッチのテーマ設定
他のフォーム要素同様に、このウィジェットも親要素のテーマ設定を自動的に継承します。特定のテーマを指定したい場合は select 要素に data-theme 属性にスウォッチを指定します。
<div data-role="fieldcontain">
<label for="flip-c">Flip switch:</label>
<select name="slider" id="flip-c" data-role="slider" data-theme="a">
<option value="no">No</option>
<option value="yes">Yes</option>
</select>
</div>
このコードにより、ハンドルの色がスウォッチ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"; });
- i
mini
boolean-
default: false
要素のサイズを、よりコンパクトなミニバージョンにする。このオプションは、data属性でも指定可能:
data-mini="true"
$('.selector').slider({ mini: "true" });
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) { ... } });