Jquery Mobile 中绑定事件

今天遇到了jmobile中绑定事件的问题,

参考:http://liyunpeng.iteye.com/blog/1964165

对页面中的绑定事件有了大概了解,不过这篇帖子年代久远,很多不是很详细,特此记录.

首先查到jmobile中的所有可以用.on()动态绑定的所有事件,

详情参考:http://www.runoob.com/jquerymobile/jquerymobile-ref-events.html

按以前的理解照抄,结果死活出不来效果,认真查看示例发现需要加"pageinit"事件

$(document).on("pageinit","#pageone",function(){
  $("p").on("tap",function(){
    $(this).hide();
  });                       
});

大概解释一下这几句代码,on的使用方式和jqeury一样,中间的参数是子集选择器,和jquery不一样的是,单击事件名字成了tap(敲击),还有个vclick(虚拟化的 click 事件处理器),亲测这2个事件效果是一样,还有如下

scrollstart 当用户开始滚动页面时触发。
scrollstop 当用户停止滚动页面时触发。
swipe 当用户在元素上水平滑动时触发。
swipeleft 当用户从左划过元素超过 30px 时触发。
swiperight 当用户从右划过元素超过 30px 时触发。
tap 当用户敲击某元素时触发。
taphold 当元素敲击某元素并保持一秒时触发。
throttledresize 启用可标记 #hash 历史记录
updatelayout 由动态显示/隐藏内容的 jQuery Mobile 组件触发。
vclick 虚拟化的 click 事件处理器
vmousecancel 虚拟化的 mousecancel 事件处理器
vmousedown 虚拟化的 mousedown 事件处理器
vmousemove 虚拟化的 mousemove 事件处理器
vmouseout 虚拟化的 mouseout 事件处理器
vmouseover 虚拟化的 mouseover 事件处理器
vmouseup 虚拟化的 mouseup 事件处理器

现在好了,可以完成自己的想法了;可是问题又来了,在有些时候会发现单击事件会触发2次....继续度娘,发现相同的情况好多,主要原因是页面初始化事件么有解绑定,与on对应的是off事件

参考:http://bbs.csdn.net/topics/390499499   完美解决

$(document).on("pageinit","#pageone",function(){
  $("p").on("tap",function(){
    $(this).hide();
  });                       
}).on("pageinit", "#page2", initPage2);

function initPage2(event) {

$(document).off(‘pageinit‘, ‘#page2‘, initPage2);

//在第二个页面需要绑定的事件代码

alert("page2 init" + event.target.baseURI);

};

PS:在查阅相关文档时发现个jmobile独有的选择器:jqmData,可以这样用

alert( $(":jqmData(role=‘content‘)").length)

最后一句,充分说明:我们不生产代码,只是谷歌(被墙以后现在是度娘)的搬运工~~

时间: 2024-08-25 00:02:57

Jquery Mobile 中绑定事件的相关文章

JQuery Mobile - 为什么绑定事件后会被多次执行?

JQuery Mobile 在绑定事件时候,发现会被多次执行,为什么啊? 原来,jquery click  不是替换原有的function ,而是接着添加,所以才会执行次数越来越多,怎么办才能按需实现功能?在执行正常点击事件之前,解绑事件!! JQuery对事件的绑定主要有两种方式,分别是on和bind,这两种方式分别对应的解绑方式为off和unbind,知道这些,我们就可以写代码了: 一,用on和off // off和on绑定"tap"方法 $("#changePasswo

jQuery中绑定事件的几种方法

以click事件为例,jQuery中绑定事件有三种方法: (1)target.click(function(){}); (2)target.bind("click",function(){}); (3)target.live("click",function(){}); 第一种方法很好理解,其实就和普通JS的用法差不多,只是少了一个on而已 第二.三种方法都是绑定事件,但是二者又有很大的不同,下面着重讲解一下,因为这个如果用到Jquery的框架的话是用的挺多的,尤其

jQuery中绑定事件bind() on() live() one()的异同

jQuery中绑定事件的四种方法,他们可以同时绑定一个或多个事件 bind()-------------------------版本号小于3.0(在Jquery3.0中已经移除,相应unbind()也移除) live()--------------------------版本号小于1.7(在Jquery1.7中已经移除,相应die()也移除) delegate()-------------------版本号小于1.7(在Jquery1.7中已经移除) on()------------------

jQuery Mobile方向感应事件

在现在的智能手机中,都有对方向变换的自动感知功能,比如当手机方向从水平方向切换到垂直方向时,则会触发该事件.在jQuery Mobile中,可以通过orientationchange事件进行绑定,并且可以设定是垂直方向还是水平方向,如下代码所示: $(document).ready(function(){ $('body').bind('orientationchange', function(event) { alert('orientationchange: '+ event.orienta

jquery mobile中显示加载中提示框和关闭提示框

在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更好一些. 先看两个方法,显示和关闭,方法来自于参考:http://blog.csdn.net/zht666/article/details/8563025 <script> //显示加载器 function showLoader() { //显示加载器.for jQuery Mobile 1.2.

仿jquery mobile中的select控件效果

不说废话,直接上代码,最好将on.png和off.png也使用jquery mobile里的图片 //仿jQuery mobile Select控件 //用法box为容器id,_id指控件id,selectvalue为选中值,Value为当前值 function SelectBox(box,_id,selectvalue,Value) { if(Value != selectvalue) { $("#" + box).html("<input type=hidden v

jQuery Mobile中jQuery.mobile.changePage方法使用详解

jQuery.mobile.changePage方法用的还是很多的.作为一个老手,有必要对jQuery mobile中实用方法做一些总结.系列文章请看jQuery Mobile专栏.jquery.mobile.changepage是过时的jQuery Mobile 1.4.0及将被删除在1.5.0.使用pagecontainer部件的change()法代替. 注意该方法是在内部使用的页面加载和转换作为一个结果,点击一个链接或提交表单时.跳转外部页面全部没有效果,必须是内部的DIV页面才有效果.

防止异步刷掉jquery加载绑定事件

<script type="text/javascript" language="javascript">        var prm = Sys.WebForms.PageRequestManager.getInstance();        prm.add_endRequest(function () {            //在这下面写你的js或jquery代码,防止异步刷掉jquery加载绑定事件            $(functio

jquery使用on绑定事件的高级方法

$(doucment).on("click",".main",function(){ } //当页面中需要对发送ajax成功后生成的元素绑定事件时:就需要用到jquery的on方法来绑定事件:因为用这样的事件代理的方法:可以吧事件对象的事件代理到document上:这样就可以通过document来找到你要绑定的元素的对象上: