jquery mobile JS与缓存的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery mobile JS与缓存的问题相关的知识,希望对你有一定的参考价值。
我的页面列表显示一些文章,点击更多时通过JS在下面再加一些内容,然后点击其它页面,再点击回来,那个更多按钮就不起作用了,在页面中设置data-ajax="false"这个,就可以了,但每次都得重新加载页面,有没有办法解决下,能让那个页面执行JS又能缓存(点击更多出现的内容也能够缓存)
function mores(more,list_ul,php_url,id)
/* $(more).css(height:"30px","line-height":"30px","text-align":"center",display:"block",margin:"auto","background-color":"#eee");
$(more+" span").css(width:"50px",height:"30px",display:"block",float:"left");
$(more+" .more-b").css( width:"100px", margin:"auto");*/
$(more).on("tap",function()
n=$(list_ul+' li').size();
$.ajax(
type: "post",
url: php_url,
data:"num="+n+"&id="+id,
beforeSend:beforecall,
success:callback
);
1、jquery mobile默认跳转都是用ajax的方法,这样的做法导致的直接影响就是页面js只能加载一次,用data-ajax后可以使当前页面摆脱ajax,而页面加载默认就是重新加载了。
2、jquery mobile默认在页面刷新或者跳转后,会自动移除缓存
然后说说你的问题,在jquery mobile中倒是有个能够控制缓存的属性:
如果想要的话,你可以使jQuery Mobile在dom中保存之前访问过的页面而不是移除他们。这样用户在回到这个页面的时候就可以迅速加载。
要让所有曾经访问过的pages都缓存,设置domcache选项为true,
html 代码:
$.mobile.page.prototype.options.domCache = true;
或者你可以缓存特定的某个页面,给page容器添加如下属性
<div data-role="page" id="cacheMe" data-dom-cache="true">
当然这个是jquery mobile的处理缓存的方法,不知道能不能解决,如果不能解决说下,我再告诉你其他方法
不明白请追问,如果对你有帮助,记得采纳~追问
data-ajax="false",加入这个之后,在加这个ata-dom-cache="true",好像不起作用了
http://m.hsyc120.com/yczl/kfal/
这是我的网站,我就是想点击下面的更多,能够了缓存,点击其他连接之后回来,刚才点击更多新加的内容还在,要不然这样感觉很慢
你的网站“更多”就是“已到底”,你要缓存什么我看不出来。
你把需要缓存的内容截图下,然后把对应部分的前台页面代码给出来,我帮你看看吧
我要缓存的就是点击更多后出现的内容,点击更多之后再点其它栏目,再点回来,刚才点击更多出现的内容就没有了,又恢复刚到原来的样子了(没有点击更多按钮时)。你要的代码是哪些,js,php
追答我大概明白你的意思了,之前理解有误,你帖的代码不全,我也看不很明白,不过ata-dom-cache="true",确实不管用,因为你是要把展开操作暂时保存,然后再回来的时候依然显示“展开”的状态吧。这个和常用的缓存没关系了,我推荐的方案是:
方案1、用某个字段来做为标识,然后在点击“更多”的时候改变状态,(按道理你应该有个可以收起的按钮)在点击一次的时候将状态再重置回来。
方案2、你的页面“更多”按钮应该有某个操作,从你代码来看(如果你贴的没错的话)应该是用AJAX在后台获取所有数据,然后在前台显示。你可以在后台把你获取的那个要传会前台的数据暂时保存到session里面。
不过一般情况下,刷新页面或者类似的重新载入当前页面的时候,“更多”都不是展开状态的,我建议你确认下需求去
每次都加载页面的好处是可以随时刷新。
jquery mobile 如何获取触摸的坐标
我自己用JS写的方法总会有点小问题,可能会遇到定位不够准确或其他问题
所以想了解下jquery mobile中有没有封装好的 在发生触摸事件时获取触摸坐标 的方法?
jquery mobile中获取触摸坐标的方法:
思路:利用jquery.mobile.js(下载)获取GPS设备的经纬度信息,然后显示输出在sogou地图上。
1.加载jquery.min.js2.加载jquery.mobile.min.js
3.var gps = navigator.geolocation;调用GPS
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>手机GPS定位获取</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.mobile.min.js"></script>
<script type="text/javascript" src="http://api.go2map.com/maps/js/api_v2.5.1.js"></script>
<script type="text/javascript">
function initialize(GX,GY)
var map = new sogou.maps.Map(document.getElementById("map_canvas"),
zoom: 15, //放大级别
center: new sogou.maps.LatLng(GX,GY),//设置中心点
mapTypeId: sogou.maps.MapTypeId.ROADMAP
);
var myLatlng = new sogou.maps.LatLng(GX,GY);
var marker1=new sogou.maps.Marker(
position: myLatlng,
map: map,
title:"经纬度坐标:"+myLatlng,
label:visible:true,align:"TOP"
);
function startgps()
var gps = navigator.geolocation;
if (gps)
gps.getCurrentPosition(showgps,
function(error)
alert("Got an error, code: " + error.code + " message: "+ error.message);
,maximumAge: 10000//超时为10000毫秒
);
else
showgps();
function showgps(position)
if (position)
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
initialize(latitude,longitude);//调用Sogou地图显示坐标
else
alert("position is null");
</script>
<style type="text/css">
bodyheight:100%;margin:0px;padding:0px
#map_canvasheight:100%;height:500px;
</style>
</head>
<body onload="startgps();">
<div id="map_canvas"></div>
</body>
</html> 参考技术A 会有一个相应的鼠标事件,这个 MouseEvent 中会有当时的像素坐标的。 参考技术B function(event)
var touch = event.touches[0];
touch.pageX;//触摸的x坐标点
touch.pageY;//触摸的Y坐标点
以上是关于jquery mobile JS与缓存的问题的主要内容,如果未能解决你的问题,请参考以下文章
预取和缓存动态创建的 jquery Mobile+PhoneGap 页面