jqm的page事件常用的有pageinit,pageshow等等,但是具体还有哪些?他们的执行顺序是怎么样的?参考下图:
jqm事件详解:参考<http://mobile.51cto.com/web-321959.htm>
(注意:将页面激活状态的样式定义为样式” ui-pagie-active-mine ”,” ui-pagie-active-mine ”中必须定义” display:block !important; overflow:visible !important;”属性。)
其他:
1 ajaxEnabled (boolean, default: true)://如果你的项目中没有用到Ajax,那么建议将这里设为false
2 ajaxFormsEnabled (deprecated boolean, default: true)://单独设置页面中的表单提交是否使用Ajax方法。
3 ajaxLinksEnabled (deprecated boolean, default: true)://单独设置页面中的链接是否使用Ajax方法。
4 autoInitialize (boolean, default: true)://设置页面是否自动初始化,当设置为false时,jQM将推迟对页面的渲染,方便我们动态构建页面的Dom元素等异步操作时引发的页面渲染失败问题。
在页面元素构建完成后用$.mobile.initializePage();来开始渲染页面。
例子:
$(document).bind("mobileinit", function(){ $.mobile.autoInitialize=false; //删除这行配置参数就会出现渲染错误 }); $(function(){ function newDom(){ $("div[data-role='content']") .append("<a href='web.html' data-role='button'>Link button</a>"); $.mobile.initializePage();//加载完成后开始渲染页面 } setTimeout(newDom,500); //延时加载 });
5 defaultTransition (string, default: 'slide')://设置默认的页面过渡效果,如果不想使用过渡效果就将参数设置为”none”。
6 gradeA (function that returns a boolean, default: a function returning the value of $.support.mediaquery)://用于判断浏览器是否属于A级浏览器。
7 loadingMessage (string, default: "loading")://设置加载提示框里显示的文本,如果设置为false,将不显示加载提示框。
8 metaViewportContent (string, default: "width=device-width, minimum-scale=1, maximum-scale=1")://设置用于页面的适应比例的mata元素,如果设置为false,将不添加Mata元素。
9 nonHistorySelectors (string, default: "dialog")://设置何种data-rel参数不会记录到哈希表。由于现阶段data-rel只有” dialog”参数,建议不要自定义此项。
10 subPageUrlKey (string, default: "ui-page")://用于设置引用子页面时哈希表中的标识。
11 其他的可以自己查看源文件。<具体可以查看jquery.mobile-1.3.1.js,搜索activeBtnClass所在的方法就是>
例如:按钮按下/划过的状态反应有些迟缓
$.mobile.buttonMarkup.hoverDelay = "false";按钮延迟效果取消
例如:按钮按下/划过的状态反应有些迟缓
$.mobile.buttonMarkup.hoverDelay = "false";按钮延迟效果取消
测试:
$("#page").live("pagecreate",function(){
alert("hi ! this is page in pagecreate");
});
$(function(){
alert("hi ! this is document is ready!");
});
</script>
</head>
<body>
header
content
footer
</body>
</html>
//加载新页面的时候执行代码,你可以给pagecreate 事件绑定代码
$("#football_news").live("pagecreate", function() { alert('Hi! this is football_news in pagecreate!!'); });
//pageshow事件 $("#football_news").live("pageshow", function() { alert('Hi! this is football_news in pageshow'); }); $(function(){ alert("Hi!document is ready!!"); });
改变页面:
通过js改变现在活动的页面,可以使用changePage方法。有很多的方法和属性在改变页面的时候进行控制:
例子:
//使用solideup效果转到about us页面
$.mobile.changePage("about/us.html",{transition:"solidup"});
//使用id为earch的表单数据转到"search results"页面
$.mobile.changePage("searchresult.do",type:"post",data:$("form#search").serialize());
问题:create和refresh的区别
create事件用于将包含UI组件的原始的HTML标记渲染。而refresh 方法应该用在已经存在的组件上,来手动通过程序刷新他
问题:jqm的相册效果
http://blog.youkuaiyun.com/cockroach/article/details/7989413
http://www.photoswipe.com/
问题:jqm的基本事件
http://www.webjx.com/javascript/jsajax-33592.html
jqueryselector:
http://www.2cto.com/kf/201301/181723.html
------------------------------------------------------------/
------------------------------------------------------------
------------------------------------------------------------
data-role='none'
------------------------------------------------------------
问题:自定义样式
参考:http://www.docin.com/p-504440485.html
------------------------------------------------------------/
问题: jquery mobile动态改变的list内容不加载
调用组件的refresh:
$("#contentList").append(content).listview('refresh');
原理:
jqm组件的显示原理是把原始的web组件隐藏,而用自动的UI组件来代替原始的web组件显示。动态改变list的值,其实是改变了原始组件web组件显示。同理,动态改变的list组件,而jqm自定义的组件并没有被更新,所以需要用refresh方法更新一下才能显示。
注意:
基本的所有的jqm UI组件都在改变子之后需要调用refresh。更多的刷新参考:jquery mobile各类组件刷新的方法。
基本的所有的jqm UI组件都在改变子之后需要调用refresh。更多的刷新参考:jquery mobile各类组件刷新的方法。
------------------------------------------------------------
问题 : jquery mobile各类组件刷新方法
1、Combobox or select dropdowns
var myselect = $("#sCountry");
myselect[0].selectedIndex = 3;
myselect.selectmenu('refresh');
2、Listviews
$('#mylist').listview('refresh');
3、Slider control
$('#slider').val(80).slider('refresh');
4、Toggle switch
var myswitch = $("#toggle");
myswitch[0].selectedIndex = 1;
myswitch .slider("refresh");
5、Radio buttons
$("input[value=grid]").attr('checked',true).checkboxradio('refresh');
or
$( ".selector" ).prop( "checked", true ).checkboxradio( "refresh" );
6、Checkboxes
$('#checkbox-1').attr('checked',true).checkboxradio('refresh');
or
$( ".selector" ).prop( "checked", true ).checkboxradio( "refresh" );
7、Buttons
$( "[type='submit']" ).button( "refresh" );
8、Column-Toggle Table
$( ".selector" ).table-columntoggle( "refresh" );
9、Reflow Table
$( ".selector" ).table( "refresh" );
-------------------
3 跳转时重复调用pageinit方法的解决办法
问题描述:
用ajax跳转的时候,从a.html跳转到b.html,用从b.html返回a.html等等这种反复跳转的时候,pageinit方法内的代码会调用多次。
解决办法:
在page中加入 data-dom-cache="true"属性,如:
<div data-role="page" id="myPage" data-dom-cache="true">
然后把pageinit方法换为pageshow,如:
$("#myPage").live("pageshow", function() { //...do something });
------------------------------------------------------------