pagecreateで呼び出された場合
$('#page').live('pagecreate',function(event){
$('#elem_container').page();
});
あなたは再帰的なループライドに行きます。この問題を処理するために、独自のenhance()関数を作成しました。
$('#page').live('pagecreate',function(event){
enhance($('#elem_container'));
});
関数は基本的に以下のコードを要約したものです...
function enhance(dis){
dis.find( "[type='radio'], [type='checkbox']" ).checkboxradio();
dis.find( "button, [type='button'], [type='submit'], [type='reset'], [type='image']" ).not( ".ui-nojs" ).button();
dis.find( "input, textarea" ).not( "[type='radio'], [type='checkbox'], button, [type='button'], [type='submit'], [type='reset'], [type='image']" ).textinput();
dis.find( "input, select" ).filter( "[data-role='slider'], [data-type='range']" ).slider();
dis.find( "select:not([data-role='slider'])" ).selectmenu();
}
古い投稿:
jQuery mobileファイルを調べた後、私はついにそれを理解しました...実際には非常に簡単です...
$("#select-choice-3").selectmenu();
そして、これが私がこれを掘り下げたコードのチャンクです...
_enchanceControls: function() {
var o = this.options;
// degrade inputs to avoid poorly implemented native functionality
this.element.find( "input" ).each(function() {
var type = this.getAttribute( "type" );
if ( o.degradeInputs[ type ] ) {
$( this ).replaceWith(
$( "<div>" ).html( $(this).clone() ).html()
.replace( /type="([a-zA-Z]+)"/, "data-type='$1'" ) );
}
});
// enchance form controls
this.element
.find( "[type='radio'], [type='checkbox']" )
.checkboxradio();
this.element
.find( "button, [type='button'], [type='submit'], [type='reset'], [type='image']" )
.not( ".ui-nojs" )
.button();
this.element
.find( "input, textarea" )
.not( "[type='radio'], [type='checkbox'], button, [type='button'], [type='submit'], [type='reset'], [type='image']" )
.textinput();
this.element
.find( "input, select" )
.filter( "[data-role='slider'], [data-type='range']" )
.slider();
this.element
.find( "select:not([data-role='slider'])" )
.selectmenu();
}