まめしみ

やったことを淡々と書く


 

jQueryMobileスタイルを適用したくなかったのでドキュメントを参考にやってみた。

 

//////////////////////////////////////////////////////////////////////////////////////////////////
追記
1.0rc2でkeepNative復活しました!
jQueryMobile(1.0rc2)でkeepNativeが復活
//////////////////////////////////////////////////////////////////////////////////////////////////

 

ドキュメントより抜粋。

 

Preventing auto-initialization of form elements

If you’d prefer that a particular form control be left untouched by jQuery Mobile, simply give that element the attribute data-role=”none”. For example:

 

If you’d prefer that a particular form control be left untouched by jQuery Mobile, simply give that element the attribute data-role=”none”. For example:

<label for="foo">
<select name="foo" id="foo"  data-role="none">
	<option value="a" >A</option>
	<option value="b" >B</option>
	<option value="c" >C</option>
</select>

Or, if you’d like to prevent auto-initialization without adding attributes to your markup, you can customize the selector that is used for preventing auto-initialization by setting the page plugin’s keepNative option (which defaults to [data-role="none"]. Be sure to configure this option inside an event handler bound to the mobileinit event, so that it applies to the first page as well as subsequent pages that are loaded.

$(document).bind('mobileinit',function(){
	$.mobile.page.prototype.options.keepNative = "select, input.foo, textarea.bar";
});

 

それぞれにdata-role=”none”を指定するか、keepNativeで除外するセレクタを設定できると書いてある。

が、、、、
data-role=”none”の指定は効いたがkeepNativeでのセレクタ設定ではダメだった。
ソースをみてみるとkeepNativeの扱いが1.0b2から大きく変更されてた。

 

1.0b1 (一部抜粋)

this.keepNative = ":jqmData(role='none'), :jqmData(role='nojs')" + (o.keepNative ? ", " + o.keepNative : "");

var allControls = this.element.find("input, textarea, select, button"),
    nonNativeControls = allControls.not(this.keepNative);

 

keepNativeに設定したセレクタを除外するようになっている。

 

1.0b2 (一部抜粋)

this.keepNative = ":jqmData(role='none'), :jqmData(role='nojs')";

$( $.mobile.slider.prototype.options.initSelector, e.target )
		.not( ":jqmData(role='none'), :jqmData(role='nojs')" )
		.slider();

 

keepNativeは除外セレクタとして使われていない。
その代わりにinitSelectorで初期化するセレクタを設定できそう。
今までのkeepNativeでは一括設定でしたが、それぞれのタイプごとに設定できるようになってるっぽい!
※上の例では「slider」

 

//////////////////////////////////////////////////////////////////////////////////////////////////
追記
1.0rc2でkeepNative復活しました!
jQueryMobile(1.0rc2)でkeepNativeが復活
//////////////////////////////////////////////////////////////////////////////////////////////////

 

今回はdata-role=”none”で対応したので試していませんが、initSelectorについてChange log に書いてありました。

Change logより抜粋

Exposed automatic initialization selectors on most widgets – The new option, initSelector is accessed through each of the widget plugins (select, slider, etc.) that expose options through the widget factory. This is used to define the selectors (element types, data roles, etc.) that should be used as the trigger to automatic initialization of each widget plugin. This allows developers to apply auto-initialization in more flexible ways.

コミットログはこちら

 

You can leave a response, or trackback from your own site.

Leave a Reply