jquery mobile 经验小结 (1)

google.fastbutton.js 立即下载

1 按钮点击反应慢

在移动设备上用户从按下手指到触发click事件,这之间有接近300ms的延时,所以把处理函数绑定在click事件上是不合适的,google.fastbutton.js为此提供了解决方案,使用方法如下:

<scripttype="text/javascript"src="../js/jquery.js"></script>
<scripttype="text/javascript"src="../js/google.fastbutton.js"></script>
<scripttype="text/javascript"src="../js/jquery.google.fastbutton.js"></script>
<scripttype="text/javascript">
   $(document).ready(function() {
   $('#btn').fastClick(function(e){
   //你的代码
 });
});
</script>
2 页面滚动

jquerymobile结合iscroll可以使页面在移动设备上流畅的滚动,使用方法如下:


iScroll 的诞生是因为手机 Webkit 浏览器(iPhone、iPod、Android 和 Pre)本身没有为固定宽度和高度的元素提供滚动内容的方法。这导致了很多网页使用 position:absolute 无法固定页头页尾,并对内容进行滚动的方式。

而 iScroll 就是为了解决这个问题。在做webApp的过程中泳道滚动用的absoulted定位,在安卓2.3.*版本上根本无法滚动,iscroll解决了这个问题;

<scripttype="text/javascript"src="../js/jquery.js"></script>
<scripttype="text/javascript"src="../js/jquery.mobile-1.2.0.js"></script>
<scripttype="text/javascript"src="../js/iscroll.js"></script>
<divdata-role="page"id="page1">
<divid="scroller"data-role="content">
<!--页面元素-->
</div>
</div>
<scripttype="text/javascript">
varmakeScroll = function(id) {
varelem= $('#'+ id);
if(elem.data('iscroll')) { //如果已经设置了滚动
return;
}
elem.css({overflow: 'hidden'});
//把需要滚动的内容包裹在<div data-iscroll='scroller'></div>标签下
//这是iscroll代码的要求
varscroller= elem.find('[data-iscroll="scroller"]').get(0);
if(!scroller) {
$(elem.get(0)).children().wrapAll("<div data-iscroll='scroller'></div>");
}
variscroll= newiScroll(elem.get(0), {
hScroll: false,//水平不滚动
vScroll: true,//垂直滚动
hScrollbar: false,//不显示滚动条
vScrollbar: false,
fixedScrollbar: true,
fadeScrollbar: false,
hideScrollbar: true,
bounce: true,
momentum: true,
//useTransform:false,
lockDirection: true,
checkDOMChanges: true,
onBeforeScrollStart: function(e) {
//以下代码解决在popup中select无法选中的问题
vartarget= e.target;
while(target.nodeType != 1)
target= target.parentNode;
if(target.tagName != 'SELECT'&& target.tagName != 'option'&& target.tagName != 'INPUT'&& target.tagName != 'TEXTAREA') {
e.preventDefault();
e.stopPropagation();
}
}
}
});
elem.data('iscroll', iscroll);
setTimeout(function() {
iscroll.refresh();
}, 200);
};
$(document).ready(function() {
$('#page1').on('pageinit', function(e) {
makeScroll('scroller');
});
});
</script>



3 替换原生的alert


当我们使用alert提示错误信息时,在移动设备上会显示页面的IP地址,与客户端整体分隔不一致,解决这个问题的办法有两个:

a 使用cordova暴露出来的notification

<scripttype="text/javascript">
window.alert=function(msg){
navigator.notification.alert(msg);
};
</script>


b 使用jquery.msg.js插件

<linkrel="stylesheet"href="../css/jquery.msg.css"/>
<scripttype="text/javascript"src="../js/jquery.js"></script>
<scripttype="text/javascript"src="../js/jquery.center.min.js"></script>
<scripttype="text/javascript"src="../js/jquery.msg.js"></script>
<scripttype="text/javascript">
window.alert = function(text) {
$.msg({
content: text,
z: 9999,
bgPath: origin + 'css/images/',
autoUnblock: false
});
};
</script>


4 改造jquerymobile的loading效果
在使用过程中,经常发现jqm的loader有两个问题:
1 时隐时现,没法控制;
2 当显示时,其下的按钮仍然能够点击,在网络状况不好的时候容易造成页面混乱。
解决方法:使用以下方法替换jqm的loader

<scripttype="text/javascript">
$(document).on("mobileinit", function() {
$.mobile.loader.prototype.options.text = '载入中...';
$.mobile.loader.prototype.options.textVisible = true;
//替换jquerymobile的Loading效果,自己控制Loading的显示和隐藏,当显示时屏幕不可点击
//loader计数器
varloadingCounter= 0;
//保存jqm的loading引用
varoriShowFuc= $.mobile.showPageLoadingMsg;
varoriHideFuc= $.mobile.hidePageLoadingMsg;
//替换为空函数,这样jqm本身不会再出现loading效果了
$.mobile.showPageLoadingMsg = function() {};
$.mobile.hidePageLoadingMsg = function() {};
window.miasShowLoading = function(text) {
loadingCounter++;
if(loadingCounter> 0) {
if(!$("html").hasClass("ui-loading")) {
//增加半透明遮罩层,屏蔽点击事件
var$overlay= $('<div id="miasLoadingMask" class="jquery-msg-content" style="position:absolute; z-index:9999; top:0px; right:0px; left:0px; height:'+ $(document).height() + 'px;"></div>');
$overlay.appendTo($('body'));
$overlay.bind('vmousedown', function(e) {
e.preventDefault();
});
});
$overlay.bind('vmousemove', function(e) {
e.preventDefault();
});
//调用jqm的loader效果
oriShowFuc.call(this, 'a',text);
}
}
};
window.miasHideLoading = function() {
loadingCounter--;
if(loadingCounter<= 0) {
loadingCounter= 0;
if($("html").hasClass("ui-loading")) {
//移除遮罩层
var$overlay= $('#miasLoadingMask');
if($overlay.length) {
$overlay.unbind('vmousedown');
$overlay.unbind('vmousemove');
$overlay.remove();
}
oriHideFuc.call(this);
}
}
};
});

</script>


5 一张页面一个JS文件
jquerymobile是通过ajax请求获取新页面的内容,把它插入到当前dom树中显示出来的,因此我们在开发过程中可以将不同的内容写在不同的文件中,例如
page1.html的内容:

<!DOCTYPE html>
<html>
<head>
<metacharset="utf-8">
<title>test</title>
<linkrel="stylesheet"href="../css/jquery.mobile-1.2.0.min.css"/>
<scripttype="text/javascript"src="../js/jquery.js"></script>
<scripttype="text/javascript"src="../js/jquery.mobile-1.2.0.js"></script>
<scripttype="text/javascript"src="./page2.js"></script>
<scripttype="text/javascript">
$(document).ready(function() {
//这里将pageinit事件转发到每个页面的自定义函数上
//通过这种方式实现页面的分离
$(document).on("pageinit", function(e) {
var$page= $(e.target);
varpageId= $page.attr("id");
if(pageId) {
if(window[pageId+ "_"+ e.type]) {
window[pageId+ "_"+ e.type]();
}
}
});
});
</script>
</head>
<body>
<divid="page1"data-role="page">
<ahref="./page2.html" data-role="button">跳转到page2</a>
</div>
</body>
</html>


page2.html的内容

<!DOCTYPE html>
<html>
<head>
<metacharset="utf-8">
<title>test</title>
<!--此处不需要引入js和css,jqm会忽略它-->
</head>
<body>
<divid="page2"data-role="page">
<!--something -->
</div>
</body>
</html>


page2.js的内容

function page2_pageinit(){
//在此处进行自定义的页面初始化
}
6 公共导航
按照jqm的官方说明,我们需要在每个页面上都添加一样的header或footer才能实现固定导航,如果我们的页面有很多,并且在导航条上有业务处理,这样的做法就很无语了。还好,我们可以通过下面的方法解决这个问题:
第一步:添加自定义标记data-header和data-footer

<divdata-role="page"id="page1"data-header="./header.html"data-footer="./footer.html">


第二步:在pagecreate事件解析data-header和data-footer

<scripttype="text/javascript">
//同步方式加载html内容
varmiasLoadContent = function(url) {
varcontent= "";
$.ajax({
url: url,
type: 'GET',
dataType: "html",
async: false,
success: function(html, textStatus, xhr) {
content= html;
},
error: function(xhr, textStatus, errorThrown) {
content= "";
}
});
returncontent;
};
$(document).on("pagecreate", function(e) {
var$page= $(e.target);
varpageId= $page.attr("id");
varheaderUrl= $page.attr("data-header");
if(headerUrl) {
varheaderHtml= window["sessionStorage"].getItem(headerUrl);
if(!headerHtml) {
headerHtml= miasLoadContent(headerUrl);
window["sessionStorage"].setItem(headerUrl, headerHtml);
}
var$header= $(headerHtml);
$header.appendTo($page);
}
varfooterUrl= $page.attr("data-footer");
if(footerUrl) {
varfooterHtml= window["sessionStorage"].getItem(footerUrl);
if(!footerHtml) {
footerHtml= miasLoadContent(footerUrl);
window["sessionStorage"].setItem(footerUrl, footerHtml);
}
$page.append(footerHtml);
}
});
</script>



第三步,编写导航条
header.html

<divdata-role="header" data-id="header"data-position="fixed"data-tap-toggle="false">
<divclass="ui-btn-left">
<ahref="./page1.html"data-role="button"data-icon="home"data-theme="b">首页</a>
</div>
<h1>非车报价</h1>
<divclass="ui-btn-right">
<ahref="#" class="headerUser"id="loginUser">SH0060</a>
</div>
</div>
footer.html
<divdata-role="footer"data-position="fixed"data-id="footer" data-tap-toggle="false">
<imgsrc="../../css/images/logo2.png">
</div>



7 加载外部popup

jqm示例代码中,打开一个popup时,这个popup必须存在于当前dom树中,如果我们多个页面需要用到一样的popup,把popup在每个页面写一份显然是不合适的,所以有了以下方法:
<scripttype="text/javascript">
varfindOrLoadDiv = function(divId, divUrl) {
var$div= $(divId);
if($div.length == 0) {
vardata= miasLoadContent(divUrl);
if(data&& data!== '') {
$div= $(data);
$div.appendTo($.mobile.activePage);
$(document).trigger('create'); //重新渲染页面元素
return$div;
} else{
console.log('load '+ divUrl+ ' failed');
returnnull;
}
} else{
return$div;
}
};
varpopup = findOrLoadDiv('#popup1', './popup1.html');
if(popup) {
popup.popup('open');
}
</script>



jquery.google.fastbutton.js jquery.google.fastbutton.js解决jquery mobile 在手机显示点击按钮的300ms的延迟! 立即下载

相关推荐

onclick反应比较慢 fastbutton较快触发

用在手机上的,手机上对onclick反应比较慢(300ms以上)用了fastbutton之后,10ms就能触发了

jQuery Mobile教程:jQuery Mobile基本事件

本文我们来认识一下jQuery Mobile的几个比较重要的基本事件 1、mobileinit 可以利用它来扩展$.mobile或者修改默认配置 示例:   //方式1:绑定mobileinit $(document).bind("mobileinit",function(e){ //修改activePageClass $.mobile.activePageClass =

GoodShot的专栏 1603

从零搭建一个虚拟ECU:手把手用Autosar CP模块模拟汽车灯控系统(基于Vector工具链)

本文详细介绍了如何使用Vector工具链从零搭建一个基于Autosar CP架构的虚拟ECU系统,模拟汽车灯光控制功能。通过环境搭建、模块配置、通信栈设置到灯光控制逻辑实现的全流程指导,帮助开发者掌握Autosar CP模块术语的实际应用,并提供了系统集成与测试的实用方案。

weixin_42628688的博客 313

jqueryMobile,提示: Object [object Object] has no method ‘jqmData‘

手机使用jqueryMobile,提示jquery mobile: Object [object Object] has no method 'jqmData',使用全局错误,变向解决了问题

诸葛小二的博客 808

DeepSeek+知网研学:三步搞定文献矩阵与对比分析(实战指南)

本文提供了一套高效实用的文献管理分析实战指南,详细介绍了如何结合DeepSeek大模型与知网研学平台,通过三个核心步骤快速完成文献梳理。该方法能自动提炼文献核心要素、生成结构化对比矩阵,并辅助发现研究空白,显著提升学术研究者的文献分析效率与深度。

weixin_29061509的博客 491

从零到一:uniPush2.0全链路集成与多厂商通道配置实战

本文提供了uniPush2.0从零开始的全链路集成与多厂商通道配置实战指南。详细讲解了DCloud平台配置、uniCloud云函数开发、客户端CID获取与消息监听,并重点攻克了华为、小米、OPPO、vivo等主流厂商推送通道的配置难点与避坑技巧,帮助UniApp开发者实现“一次集成,全端覆盖”的高效消息推送方案。

onion的博客 433

jquery mobile_jQuery Mobile课程1

jquery mobileIn a new series of articles, we will talk about jQuery Mobile framework, which easily allows you to create responsive mobile websites. 在一系列新文章中,我们将讨论jQuery Mobile框架,该框架可轻松使您创建响应式移动网站。 ...

cuken7684698822的博客 479

别再手动下单了!用Python+EasyTrader+同花顺,5分钟搞定你的第一个自动化交易机器人

本文详细介绍了如何使用Python和EasyTrader结合同花顺客户端快速构建自动化交易机器人。从环境配置到实战脚本编写,涵盖自动打新、条件单、跟单策略等核心功能,并分享性能优化与风险控制技巧,帮助投资者高效实现自动化交易。

weixin_30381317的博客 398

jquery mobile java_[Java教程]jquery mobile小经验

[Java教程]jquery mobile小经验02014-08-22 15:01:54现在网站上关于jquery mobile的demo和帖子可真少啊,我刚开始接触,遇到了一些问题,都找不到人请教。这是我的个人经验总结,或多或少会对刚入门的童鞋有点帮助吧。如果想一开始进入页面的时候就弹出来一个警告框,目前我知道的有三种办法可以解决:1.利用jqm因为jqm的加载远早于document.ready...

weixin_33477335的博客 247

多角度模板匹配的模板创建技巧

基于形状的模板匹配多角度创建技巧

manuoo的专栏 3403

华为od 面试八股文_Python_02_含答案

华为od 面试八股文_Python_02_含答案

MISAYAONE的博客 4535

jQuery Mobile 安装

- meta使用viewport以确保页面可自由缩放 -->-- meta使用viewport以确保页面可自由缩放 -->如果你想将 jQuery Mobile 放于你的主机中,你可以从。-- 引入 jQuery Mobile 样式 -->-- 引入 jQuery Mobile 样式 -->-- 引入 jQuery Mobile 库 -->-- 引入 jQuery Mobile 库 -->-- 引入 jQuery 库 -->-- 引入 jQuery 库 -->将下载的文件放置于与网页同一目录下。

Jellyken的博客 2332

python如何给声音增加回声效果

创建任何声音对象的回声效果。使用sndarray和numpy来创建原始声音的偏移和衰减副本。目前它只是使用硬编码的值来设置回声的数量和延迟。你可以根据自己的需要轻松地重新创建。这段注释说明了make_echo函数的用途和实现方式,即通过pygame的sndarray模块和numpy库来处理声音数据,生成具有回声效果的声音。函数中使用了固定的回声数量和延迟时间,但这些值可以根据用户的需求进行调整。

zhangzhechun的专栏 977

jQuery Mobile 弹窗

弹窗是一个非常流行的对话框,弹窗可以覆盖在页面上展示。弹窗可用于显示一段文本,图片,地图或其他内容。创建一个弹窗,需要使用 <a> 和 <div> 元素。在 <a> 元素上添加 data-rel="popup" 属性, <div> 元素添加 data-role="popup" 属性。接着我们为 <div> 指定 id, 然后设置 <a> 的 href 值为 <div> 指定的 id。<div> 中的内容为弹窗显示的内容。<div> 弹窗与点击的 <a> 链接必须在同一个页面上。

Jellyken的博客 1773

(四) OpenClaw-Skill技能全面了解和自定义技能

OpenClaw Skills是提升AI代理功能性的关键模块。本文系统介绍了Skills的核心概念、获取渠道和创建方法。Skills作为标准化指令集合,能让OpenClaw从单纯理解升级为实际执行任务,相比传统System Prompt具有模块化、可复用等优势。用户可通过Clawhub官方商店、GitHub社区等渠道获取5700+现成技能,或按需开发自定义Skill。文章详细演示了创建"Hello World"示例技能的完整流程,包括编写Python脚本、配置SKILL.md文件、部署。

直到世界的尽头 8295

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

什么是jQuery Mobile ?,怎么用jQuery Mobile

jQuery Mobile是一款基于jQuery的移动端UI框架,用于构建跨平台移动网页应用(支持触控优化和响应式布局)。需要注意的是,该框架已于2021年停止维护,最新版本为1.4.5,建议仅用于学习或旧系统维护。教程涵盖基础使用(包括页面结构、多页面模板、按钮/列表表单等组件)、主题样式、事件处理、页面切换效果以及响应式网格等内容,并附有完整示例代码。虽然jQuery Mobile已被现代框架取代,但了解其原理对理解移动Web开发仍有帮助。

m0_57545130的博客 792

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jquery mobile小经验

[size=medium]现在网站上关于jquery mobile的demo和帖子可真少啊,我刚开始接触,遇到了一些问题,都找不到人请教。  这是我的个人经验总结,或多或少会对刚入门的童鞋有点帮助吧。  如果想一开始进入页面的时候就弹出来一个警告框,目前我知道的有三种办法可以解决:  1.利用jqm因为jqm的加载远早于document.ready事件发生时,当Jquery Mobile开始

闷骚的男 2047

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jQuery mobile从入门到放弃

之前只知道jquery有个专门做移动端的插件,今天做移动端项目的时候了解了下它的事件,简单实用,触摸滑动基本都有,因为之前小组默认都是jQuery来写代码来着,所以从官网下载出来准备直接开动,但一直到从中午到晚上,他让我感觉到越来越绝望,现在,我想把我遇到的问题写出来,大家可以参考一下 问题1:我在两个官网分别下载最新的插件,jquery.mobile-1.4.5.min.js与jquery

Dorui的博客 1万+

【JQuery Mobile移动应用开发实战】JQuery Mobile基础——JQuery Mobile的高级特性

《jQuery Mobile移动应用开发实战》学习笔记

lht964249279的博客 1464

jQuery mobile ——制作表单

请运用jQuery mobile功能,将以下关于问卷调查的表单(Form)页面完成,请注意网页版面的调整,使得手机画面能够工整与美观。请同学完成此网页内容与相应所需的java script。

qq_45935715的博客 2321

jquery mobile 应用案例

&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" name=&

GS2016的博客 8724

【Jquery mobile】tab功能的实现

目前有两种简单的实现方式: 一,jquery mobile 的实现 jquery的tab的实现是通过在各自页面的footer添加tab项实现的,如下: 实现代码如下:   Friends Albums Emails 二,还有一个开源js: https://github.com/groovetrain/jQuery.mobile-Tabs 有例子,

开发简记 2万+

jquery mobile 日期插件使用

昨天碰到使用日期 的应用,就开始百度 jquery mobile 日期插件 一般是使用 datebox 和 mobilescroll 昨天开始研究datebox,一直到今天上午才研究好,而且只研究了 日期控件,  日期带时间一起的好像没有。 没办法 就开始研究 mobiscroll   使用很方便,只需要引入2个文件 。 下面是 data 和 datatime 2种 控件的使用方法。

mfc2003的专栏 1万+

jQuery Mobile 表格

jQuery Mobile 表格组件提供两种响应式布局方案: Reflow模式(推荐) - 小屏自动堆叠为卡片式布局,适合4列以内的数据展示 Column Toggle模式 - 通过按钮切换显示/隐藏列,适合列数较多的场景 关键特性: 自动适配移动端 支持主题样式 可动态刷新数据 提供优先级控制(data-priority) 使用要点: 必须添加data-role="table"和class="ui-responsive" 列数控制在4列以内为佳 重要数据列可设置高优

likuoelie的博客 1004
上一篇: sturts2框架的学习笔记,问题解决:
下一篇: javaScript学习 面向对象编程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值