在jQueryMobile(1.0Alpha4.1)中为jQuery选择器标记页面

时间:2011-05-12 20:13:02

标签: jquery-mobile

假设我们想要在移动前端以外的页面上绑定事件侦听器,如:

$(function() {
  $("#my-div").bind("foo.bar", handleFooBar);
});

在jQueryMobile中,上面的常用方法不起作用,因为该块在加载首页时将执行一次,而jQM实际上不再使用#my-div获取和加载页面。我知道如何通过使用其中一种实时方法来欺骗它;但是在各个地方(包括文档),我看过人们选择页面级别的id或类,例如,

$("#second-page").live("pagecreate", function() { 
  $("#my-div").bind("foo.bar", handleFooBar);
});

但我一直无法让jQM为第一个之后加载的页面级别div分配类或id,即我从

开始

首页

<body>
  <div id="front-page-id" class="front-page-class" data-role="page">
    <a href="/second-page">next</a>
  </div>
</body>

第二页

<body>
  <div id="second-page-id" class="second-page-class" data-role="page"></div>
</body>

在打开首页并导航到第二页之后,有一个像:

这样的DOM
body
  div.ui-page.front-page-class#front-page-id[data-role="page"]
  div.ui-page.ui-page-active[data-role="page"]

即所有页面,但前面的没有他们的ID或类。

这应该有效吗(ids和类通过)?

1 个答案:

答案 0 :(得分:2)

jquery mobile加载的页面始终标有data-url个属性。要在显示页面时完成某些操作(就像以前一样使用DOMready),您可以:

$("div:jqmData(url='thatone.html')").live('pageshow',function(e){
//stuff
});

此定义可以位于主页面或外部脚本中的任何位置。它需要加载jQuery。感谢live方法,它不需要在事件发生之前存在页面,甚至根本不存在。

如果使用多重,您可以自己标记。