Jquery mobile问题总汇

转载:http://www.wglong.com/main/artical!details?id=4#q6
1页面缩放显示问题

问题描述:

页面似乎被缩小了,屏幕太宽了。

解决办法:

在head标签内加入:

<meta name="viewport" content="width=device-width, initial-scale=1">


2 页面跳转后样式丢失js失效

问题描述:

用ajax跳转的时候,从a.html跳转到b.html后,b.html的css以及js都失效了。

解决办法:

将当前页面需要用到的css以及js放在<page>div内。

原理:

由于jqm的ajax跳转的时候,只会把b.html中<page>内的内容加载进dom,而<page>外的代码都不会加载,所以导致在<page>外的js和css都失效了。


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
});


4 如何调用loading效果

js代码:

//显示loading
function showLoading(){
$.mobile.loadingMessageTextVisible = true;
$.mobile.showPageLoadingMsg("a", "加载中..." );
} 
//隐藏loading
function hideLoading(){
$.mobile.hidePageLoadingMsg();
} 

查看Demo »

扫描查看Demo: 
jqmDemo


5 动态改变了list的内容,但是内容并没有变化

解决办法:

调用组件的refresh方法,刷新list,如:

$("#contentList").append(content).listview('refresh');

原理:

jqm组件的显示原理是把原始的web组件隐藏,而用jqm自定义的UI组件来代替原始的web组件显示。动态的改变了list的值,其实改变的是原始组件list的值,而jqm的list组件的值并没有被更新,所以需要调用list组件的refresh方法来使其更新并显示。

注意:
此问题不只局限于list组件,基本所有的jqm UI组件在改变值之后都需要调用组件对应的refresh方法,例如button组件( $('#id').button('refresh') )等等。更多刷新方法请查看:jquery mobile各类组件刷新方法


6 把所有内容放到一个页面好,还是分开多页面好?

对于这个问题,说说笔者的个人见解:
#1所有内容放到同一页面
#2分页面存放内容

对于#1,如果是比较简单的网页内容,可以考虑把内容都放在同一个页面。但是如果页面结构很复杂,跳转页面比较多的话,那#1就会显得很臃肿,增加维护的复杂度。
而#2比较适合页面结构以及页面比较多的情况,易维护。
性能方面,笔者查了一些资料,也亲自做了些实验,并没有发现性能上的明显差异。
结论:根据个人编码习惯,两种选择都是可以的。但是似乎并不能混合使用,根据项目选其一使用吧。


7 如何禁掉ajax跳转?

问题描述:

尽管ajax跳转有很炫的转屏动画,但是在某些时候为了性能或者为了业务需求还是需要禁掉ajax跳转的。

解决办法:

禁止ajxa跳转有两种情况:

1、禁止局部ajax跳转

2、禁止全局ajax跳转

对于#1只需要在a标签中添加下面的属性:

data-ajax=“false”

有时我们要用正常的http请求而不用Ajax请求,比如链接到别的网站等情况。通过给a标签加下面的属性,可以将链接指定为正常的http请求:

rel=external

对于#2我们需要设置一个全局的禁止ajax跳转的方式,js代码如下:

$(document).bind("mobileinit", function() {// disable ajax nav$.mobile.ajaxEnabled=false});

注意:上面的代码片段需要放在jquery.mobile-xxx.min.js引入之前。

顺便说一句,初始化的设置都需要放在此处,例如加载错误信息的设置:

$.mobile.pageLoadErrorMessage = 'Sorry, something went wrong. Please try again.';


8 为什么android2.3系统转屏无效果?

问题描述:

发现在android2.X系统测试的时候slide等转屏效果并没有很好的显示,而是一闪而过了。但是在android4.0+显示却正常。

问题分析:

之所以android2.X系统对slide等转屏效果支持不是很好,是因为slide等效果都需要3D支持,而android2.X系统不支持3D,

而JQM遇到这种情况的时候把slide等效果“退化”到淡入淡出效果,根据笔者的测试即使这种淡入淡出效果也不尽人意,感觉有点像“闪屏”,在这种情况下直接把转屏效果设置为none,反而比这种淡入淡出看着更舒服。

既然android2.X不支持3D转场,但是android4.0支持,我想在4.0系统保留转场效果,而在2.X上去除转场效果怎么办?

解决办法很简单,只需要加入下面的代码即可:

$.mobile.transitionFallbacks.slideout = "none"

更多关于“闪屏”的问题,请看:10、jquery mobile “闪屏” 问题


9 如何去掉jqm自带的组件样式?

问题描述:

尽管jqm提供了比较美观的组件样式,但是有些时候我们需要去掉jqm自带的样式。

解决办法:

解决办法很简单,只需要在组件中加上如下属性就可以了:

data-role='none'


10 jquery mobile “闪屏” 问题

官方描述:

Important: Some platforms currently have issues with transitions. We are working on a solution to solve the problem for everyone. If you are experiencing flickers and flashes during or at the end of a transition we suggest the following workaround. Please note that this workaround should be thoroughly tested on the target platform before deployment. This workaround is known to cause performance issues and browser crashes on some platforms, especially Android. Add the following code to your custom css..ui-page { -webkit-backface-visibility: hidden; }

即使加上官方提供的css代码片段,效果仍旧不尽人意,这个问题到现在仍旧是jqm的一个比较严重的问题,希望下个版本可以解决此问题。

除了在8、为什么android2.3系统转屏无效果? 中提到的内容外,近日在群里聊天,南京-恰恰虎提出一个可以缓解的方案,即:可以更改jqm的css,让闪的背景色和页面的一致,具体修改以下css:

.ui-body-c, .ui-overlay-c {border: 1px solid #AAA;color: #333;background: #F9F9F9; //修改这里的颜色代码
}

我想这是一个很好的思路,是个值得一试的方法,但是笔者还没有亲自实验,需要的朋友可以亲自试一试,有空的话记得回来在评论里发表一下实验结果哦。



11 按钮按下/划过的状态感觉反应有些迟缓?

解决办法很简单,只需要加上如下设置就可以了:

$.mobile.buttonMarkup.hoverDelay = "false";


12 jquery mobile各类组件刷新方法

1、Combobox or select dropdowns

var myselect = $("#sCountry");myselect[0].selectedIndex = 3;myselect.selectmenu('refresh');
or
$( ".selector" ).selectmenu( "refresh", true );

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" );
or
$( ".selector" ).buttonMarkup( "refresh" );

8、Column-Toggle Table

$( ".selector" ).table-columntoggle( "refresh" );

9、Reflow Table

$( ".selector" ).table( "refresh" );


13 在页面动态添加组件,发现css消失了

首先请试一试上面问题12的解决方案,如果没有效果的话,那就试试加上.trigger('create'),例如:

$("#id").html(content).trigger('create');
or
$.mobile.pageContainer.trigger("create");


14 关于checkbox取值问题

网友流浪的旋律在checkbox取值的时候,发现官网并没有提供相关方法,通过查阅资料终于找到了取值方法,并找到我分享在此,再次感谢流浪的旋律的分享精神!

取值方式如下:

$(.checkbox)[0].checked

查看checkbox取值Demo »

下载checkbox取值Demo »


15 点击屏幕,header和footer会略微抖动?

问题描述:

在真机运行的时候,轻击屏幕会发现header和footer有略微的抖动。

解决办法:

在header和footer中添加如下属性:

data-tap-toggle="false"

添加这个属性也可以解决点击屏幕header或footer消失问题。


16 jqm图标|图标定位|隐藏图片上的文字|去除图标阴影|自定义图标|去除按钮阴影/圆角

1、图标定位 data-iconpos

默认情况下,所有的图标都放在按钮的按钮文本左。此默认可以覆盖使用 data-iconpos 属性来设置图标的右上方(top)、底部(bottom)、右侧(right)、左侧(left)的文本

2、隐藏图片上的文字 data-iconpos=”notext”

你也可以创建一个图标按钮,设置 data-iconpos=”notext”。按钮插件将隐藏的文字在屏幕上,但把它作为给屏幕阅读器和设备支持工具提示上下文链接标题属性。例如,data-iconpos=”right”,data-iconpos=”notext”:

3、自定义图标 data-icon=”自定义值”

使用自定义图标,需要指定 data-icon 值。Jquery Mobile的button插件会将生成一个CSS类,它的前缀是ui-icon- ,后面的是data-icon值。假如:有一个按钮 data-icon 属性的值为 myapp-email,即 data-icon=“ myapp-email”。那么生产的CSS类是:ui-icon-myapp-email。

然后你可以在你的样式表写一个CSS规则来定义 ui-icon-myapp-email。然后在css中指定这个类的背景图片地址。为了保持与其他图标的视觉上的一致性,请创建一个白色18×18像素的PNG-8图标,并且保存为Alpha透明度。

.ui-icon-myapp-email {background-image: url( "app-icon-email.png" );
}

这将创建标准分辨率的图标,但许多设备都有非常高的分辨率的显示器,就像iPhone 4的视网膜显示器。添加一个高清图标,创建一个图标,36X36像素(18像素大小完全相同的两倍),并添加第二个规则使用WebKit分钟装置像素比例:2。媒体查询到目标的规则只有以高分辨率显示器。指定背景图片高清图标文件和设置背景像素大小18×18将安装36个像素图标到同一个18像素的空间。传媒查询块可以用多个图标规则:

@media only screen and (-webkit-min-device-pixel-ratio: 2) {.ui-icon-myapp-email {background-image: url( "app-icon-email-highres.png" );background-size: 18px 18px;}...more HD icon rules go here...
}

4、去除按钮阴影/圆角

data-shadow=”false”
data-corners=”false”

本小结引自:http://www.wpdic.com/?p=59


17 jqm组件显示正常,但是小图标是“空的”,没有正常显示

问题描述:

例如header中的返回按钮,按钮的显示和功能都正常,但是按钮上的“返回小图标”没有显示。

解决办法:

这是由于没有引入jqm的图片文件引起的,解决方法是在jqm的资源包里找到images文件夹,并把images文件夹引入自己的项目,与jqm的css文件放在同一级目录里。


18 $.mobile.changePage方法不能正常跳转

问题描述:

$.mobile.changePage不能跳转,而window.location.href却可以正常跳转。

原理:

这个问题牵扯到jqm的跳转机制了,简单的说jqm的默认跳转方式,也就是$.mobile.changePage这种方式,原理是ajax跳转。听起来很神秘,其实就是通过ajax动态的把目标页面的内容加载到当前的dom中。当多页面跳转的时候,通过ajax跳转,就存在ajax跨域的问题。所以解决目前的问题,其实就是解决ajax跨域的问题。

解决办法:

为了解决跨域问题,我们需要把项目放在服务器环境下。好多朋友不知道什么叫服务器环境,说白了就是把项目部署到WAMP或者TOMCAT等等的服务器下,然后通过http://localhost/xxx 这样的方式访问项目。

小结:这里提到了jqm的跳转机制了,笔者之前写过一篇文章:JQM进阶:转屏效果的模拟实现,这篇文章完全没有用jqm,而是模拟了jqm的跳转过程,想深入了解jqm跳转的朋友可以看一看这篇文章的实现原理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux环境OpenRASP使用教程,集成openRASP与攻击测试

1.介绍openRASP是一个百度的安全框架&#xff0c;将其集成到我们的web项目中&#xff0c;就像是给web项目安装了一款“安全管家”的软件&#xff0c;它可以检测到攻击&#xff0c;并进行拦截。2.集成openRASP到项目中openRASP针对不同的服务器&#xff0c;提供了不同的安装方法…

ExtJs 备忘录(4)—— Form表单(四) [ 数据提交 ]

一、截图和示例共用Ext.FormPanel1.1  截图由于本文主要关注的是表单提交的几种方式&#xff0c;所以仅用了一个表单项以便于测试和减少示例代码。1.2  示例共用Ext.FormPanel <script type"text/javascript">Ext.onReady(function() { Ext.Qui…

struts2访问jsp页面404

问题描述 在搭建struts2环境的时候&#xff0c;拷贝了web.xml&#xff0c;拷贝了struts.xml&#xff0c;拷贝了jar包。运行&#xff0c;正常&#xff0c;访问jsp页面&#xff0c;报404错误。 web.xml <?xml version"1.0" encoding"UTF-8"?> <w…

centos7定制linux镜像,自定制Centos7.3系统镜像(ISO)

本文主要介绍如何根据官方的Centos镜像文件&#xff0c;在保留原有默认安装的RPM包的基础下&#xff0c;添加自己所需要的RPM包的&#xff0c;最终生成一个自定制版的ISO&#xff0c;节省了宝贵的时间并确保了安装的定制性。对于其他没有介绍的修改&#xff0c;后续在实践中会进…

调用打开另外一个APK

2019独角兽企业重金招聘Python工程师标准>>> Intent mIntent new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName comp new ComponentName("com.mm.android.direct.gdmssphoneLite", "com.mm.android.direct.gdmsspho…

Jquery Mobile dialog的生命周期

JQuery Mobile对htm5的移动开发绝对是个好用的东西&#xff0c;今天简单谈谈JQuery Mobile中的dialog的使用。 1.对话框的弹出。 2.对话框的生命周期。 3.对话框内事件的注册。 1&#xff09;第一个问题&#xff1a;对话框的弹出。 如果要弹出一个对话框&#xff0c;可以在页面…

c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...

个C语言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“万物莫不有对”体现了中国传统哲学的矛盾观。用户在进行产品的三维设计时&#xff0c;干函可以采用以下( )的设计方法。数组少意识是人脑对客观…

Citrix Netscaler版本管理和选择

Citrix Netscaler版本管理和选择 来源 http://blog.51cto.com/caojin/1898164 随着Citrix Netscaler的快速发展&#xff0c;有很多人在维护设备时经常搞不懂Netscaler软件版本是如何查看和选择&#xff0c;当前软件是否需要升级&#xff0c;当前软件是否稳定等。基于以上问题&a…

oracle实例与数据库

一、名称 Oracle数据库服务器。单叫数据库或服务器都不全面。 二、组成 oracle数据库服务器由二部份组成&#xff1a;实例和数据库 实例&#xff1a; 可理解为对象&#xff0c;看不见。数据库&#xff1a; 理解为类&#xff0c;看得见的&#xff0c;E:\app\Administrator\…

WEB前端面试题汇总整理01

1.JS找字符串中出现最多的字符 例如&#xff1a;求字符串nininihaoa中出现次数最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次数加1} else {o[char] 1;…

c语言 文件游程统计,游程 码表 如何形成

游程 码表 如何形成求一个程序 将下表用huffman 树存储表示用传统的霍夫曼建立的树 好像不能形成此码表。我感觉应该有一个特等的算法。我也试了好几种方法&#xff0c;感觉都不行&#xff0c;希望大家给点建议。(码表 要利于编码和解码)(部分码表)白游程 码子 黑游程 码子(长…

2.ORM思想

一、ORM思想介绍 orm是一种思想&#xff0c;是dao层代码的一种编写思想。其中&#xff1a;o代表Object&#xff0c;java对象&#xff1b;r代表Relation&#xff0c;关系型数据库&#xff1b;m代表Map&#xff0c;java对象和关系型数据库表的映射关系。该思想主张&#xff1a;1、…

android 字体颜色选择,Android中颜色选择器和改变字体颜色的实例教程

易采站长站为您分析Android中颜色选择器和改变字体颜色的实例教程,其中改变字体颜色用到了ColorPicker颜色选择器,需要的朋友可以参考下1.构建一张七彩图:我们经常看到这种样子的颜色选择器吧..然后其实右边的亮度选择是:这样我们的代码就可以进行啦...// 创建七彩图片private …

新版vue-cli搭建多页面应用

2019独角兽企业重金招聘Python工程师标准>>> 折腾了好久&#xff0c;终于把坑踩完了&#xff0c;废话不多说&#xff0c;上教程~ github地址&#xff1a;https://github.com/guolihuaGitHub/vue-cli-multipage 另外推荐一下我另一篇博客&#xff0c;我觉得这篇好用&…

2017 Google 开发者大会直播入口

今年&#xff0c;Google 开发者大会再度来袭&#xff01;大会将于 12 月 13 日和 14 日在上海举办&#xff0c;主题涵盖机器学习 (Machine Learning)、Android、移动网络&#xff08;Mobile Web)、TensorFlow、Firebase、云服务 (Cloud)、AR/VR、设计 (Design) 以及更多开发者相…

日志组件slf4j介绍及配置详解

2019独角兽企业重金招聘Python工程师标准>>> 原文出自 1 基本介绍 每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的&#xff0c;而很多程序员也已经熟悉各种不同的日志库&#xff0c;如java.util.logging、Apache log4j、logback。…

count(*),count(1),count(0)效率

网上文章很多&#xff0c;今天分别跑了一张2000多万行的表&#xff0c;该表没有主键&#xff0c;索引&#xff0c;约束条件。 结果是&#xff0c;效率差不多

android 转场动画兼容问题,【Android】关于ARouter转场动画的问题

实现从主页跳转到搜索页&#xff0c;再从搜索页回退主页withTransition(int resId,int resId)这个方法两个参数第一个的意思是&#xff0c; A 到 B&#xff0c; B 的入场动画第二个的意思是&#xff0c;A 到 B&#xff0c; A 的出场动画即&#xff0c;入场动画&#xff0c;出场…

react不同环境不同配置angular_叫雨山斗鸡优势在哪里,环境不同,价值不同

叫雨山斗鸡优势在哪里&#xff0c;环境不同&#xff0c;价值不同 原生态高端食材网站&#xff0c;专注金线莲、散放斗鸡、斗鸡蛋、野生蜂蜜、小耳黑猪肉等云南原生态套餐定制的高端食材供应商。云南叫雨山斗鸡叫雨山斗鸡原生态饲养 叫雨山斗鸡源自于鲁西斗鸡&#xff0c;初代斗…

android studio 布局拖拽,为什么使用android studio不能像老师一样在Design里随意拖动控件...

qq_喷泉_02017-07-25 13:08已采纳xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"tools:context"co…