2011-05-12 44 views
1

比方說,我們要一個事件監聽器比移動前其他頁面上的結合,如:馬克頁jQuery選擇

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

在jQueryMobile的常用方法上述方法將不起作用,因爲該塊將在加載首頁時執行一次,而不再是jQM實際提取並使用#my-div加載頁面。我知道如何通過使用其中一種現場方法來作弊;但在不同的地方(包括文檔)我見過的人選擇一個頁面級別ID或類,例如,

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

但我一直無法得到JQM分配類或ID的頁面級div的裝第一個,即後,我開始與

頭版

<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或類。

該作品(ID和課程是否通過)?

+0

您是通過AJAX調用第二頁還是使用多頁面佈局? http://jquerymobile.com/demos/1.0a4.1/docs/pages/docs-pages.html – 2011-05-12 20:17:12

+0

通過Ajax間接地,即非外部鏈接,如在<' – 2011-05-13 01:02:09

回答

2

jquery mobile加載的頁面始終使用data-url屬性標記。要在顯示頁面時(就像它曾經是與domready中)得到的東西做,你可以:

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

而且這個定義可以在主頁或在外部腳本的任何地方。它需要加載jQuery。得益於實時方法,它不需要在事件發生之前存在頁面,甚至根本不需要頁面存在。

如果使用倍數,您可以自己標記它們。

+0

謝謝,太糟糕了jQM並沒有拉過id或class,因爲它們與內容有1-1關係,而urls是非常弱的。 – 2011-05-13 12:30:39

+0

你可以嘗試用ID替換它,但它們將是定製的,你將不得不讓它們獨一無二。相反 - jquery使用URL(根據定義是唯一的)來標識頁面。 – naugtur 2011-05-13 12:55:38