jquerymobile动态添加元素之后有些不能被正确渲染的解决方法:
listview: 添加 jq(".detail").listview("refresh");
div或其他:添加.trigger( "create" );
create事件适用范围广,甚至可以是 不存在的元素(raw markup?),比如要插入一个按钮
$('<a data-role="button">dy button</a>').appendTo('#content').trigger('create');
有些对象提供了refresh 方法,如listview、flip toggle。与create的区别是refresh方法需要作用在已存在的对象上,如
$('ul').listview('refresh'),而且refresh只会去更新新加入的元素,如listview里最新append的元素会更新,原有的保持不变。
不使用jqm样式:
如果不希望jqm自动初始化你的元素,有两种方法。加入data-role="none"属性,或者在mobileinit事件中对keepNative选项进行配置
1 $(document).bind('mobileinit',function(){ 2 $.mobile.page.prototype.options.keepNative = "select, input.foo, textarea.bar"; 3 });
关于jquery mobile checked全选反选的操作 与jquery的操作不同
$("[name=checkReason]:checkbox").filter(':checkbox').prop('checked', false).checkboxradio("refresh");
jquery mobile列表远程数据的自动过滤 listviewbeforefilter
<!DOCTYPE html> <html> <head> <title> Page Title</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" /> <script src="http://code.jquery.com/jquery-1.9.1.min.js"> </script> <script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"> </script> <script> $( document ).on( "pageinit", "#myPage", function() { $( "#autocomplete" ).on( "listviewbeforefilter", function ( e, data ) { var $ul = $( this ), $input = $( data.input ), value = $input.val(), html = ""; $ul.html( "" ); if ( value && value.length > 2 ) { $ul.html( "<li> <div class='ui-loader'> <span class='ui-icon ui-icon-loading'> </span> </div> </li> " ); $ul.listview( "refresh" ); $.ajax({ url: "http://gd.geobytes.com/AutoCompleteCity", dataType: "jsonp", crossDomain: true, data: { q: $input.val() } }) .then( function ( response ) { $.each( response, function ( i, val ) { html += "<li> " + val + "</li> "; }); $ul.html( html ); $ul.listview( "refresh" ); $ul.trigger( "updatelayout"); }); } }); }); </script> <style> html, body { padding: 0; margin: 0; } html, .ui-mobile, .ui-mobile body { height: 1035px; } .ui-mobile, .ui-mobile .ui-page { min-height: 1035px; } .ui-content{ padding:10px 15px 0px 15px; } .ui-listview-filter-inset { margin-top: 0; } </style> </head> <body> <div data-role="page" id="myPage" style="max-height:1040px; min-height:1040px;"> <div data-role="content" > <div data-demo-html="true" data-demo-js="true" data-demo-css="true"> <ul id="autocomplete" data-role="listview" data-inset="true" data-filter="true" data-filter-placeholder="Find a city..." data-filter-theme="d"> </ul> </div> </div> </div> </body> </html>
默认是查出全部输入搜索姓名以后模糊查询