js动态添加元素之后jquery mobile不能正确渲染解决方法 和 JM checked全选反选

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> 

默认是查出全部输入搜索姓名以后模糊查询

 

 

 

 

posted @ 2015-07-14 16:13  (●—●)  阅读(254)  评论(0编辑  收藏  举报