2012-03-29 55 views
2

我試圖隱藏我的jQuery Mobile站點上的所有標籤標籤以友好的方式訪問。爲此,我正在使用javascript將ui-hidden-accessible類應用於我的網站上的每個標籤(http://jquerymobile.com/test/docs/forms/docs-forms.html)。如何以友好的方式隱藏我的jQuery Mobile站點中的所有標籤標籤?

但是,我的JavaScript不工作。

這是一個小提琴演示如何仍然出現標籤標籤。 http://jsfiddle.net/tW4Xu/

爲什麼它不起作用?我也仔細檢查其他JQM事件處理程序,如pageinit和pagecreate: http://jquerymobile.com/test/docs/api/events.html

我的JavaScript來隱藏標籤標籤:

// done after page is loaded 
$(document).on("pageshow", "label", function(event) { 
    $(this).addClass("ui-hidden-accessible");  
});​ 

回答

1

好像你有一些事情出錯這裏,雖然我不知道有多少是來自未來的jsfiddle總結和你的完整代碼有多少。

首先要注意的是'pageshow'是一個頁面轉換事件。看起來你可能想用'pageinit'代替。這裏的JQM文檔如何描述它:

觸發頁面上的初始化,初始化發生之後。我們建議綁定到此事件而不是DOM ready(),因爲無論頁面是直接加載的還是作爲Ajax導航系統的一部分將內容拉入另一個頁面,都可以工作。也在這裏)

$('#aboutPage').live('pageinit',function(event){ 
    alert('This page was just enhanced by jQuery Mobile!'); 
}); 

注:1)該事件被綁定活(而不是在()(不知道是否有區別),和2),它被連接到一個特定的ID一個jQM'頁面'。這是你的jsfiddle例子中缺少的部分。沒有任何命名的jQM頁面。 jQM會混淆整個頁面準備好的想法,因爲所有內容都在一個html文件中,然後使用id和通過AJAX插入。最後:即使jQM說不要,如果你的目標是把這個類添加到每個單獨的jQM頁面上的每一個標籤,我會使用古老的$(document).ready(),然後使用$ .each()全部改變它們。再次,從JQM文檔:

然而,在jQuery Mobile的,阿賈克斯被用作導航到每一頁的內容裝入DOM和DOM準備處理程序只執行了第一頁。要在加載並創建新頁面時執行代碼,可以綁定到pageinit事件。

因此,有沒有什麼邪惡約$。就緒(),它只是這個事件僅觸發一次,因此後續頁面過渡不會觸發它。但這可能正是你想要的。

此代碼上的jsfiddle:

$(document).ready(function(event) { 
    $("label").each(function(index, element) { 
    element.addClass("ui-hidden-accessible"); 
    }); 
});​ 

如果您的真實網站,你會注意到頁面轉換導致標籤回來,那麼你要綁定到別的東西,又可能「pageinit」 。

希望這會有所幫助!爲冗長的道歉...我有種去那裏吧?

1

http://jsfiddle.net/tW4Xu/2/

是什麼?不知道您的具體要求是什麼使用on('pageshow'),在我的小提琴我用

$(function() { 
    $('label').addClass("ui-hidden-accessible");  
});​ 
1

不要使用它的已棄用的jquery 1.7。你有正確的想法只是在頁面顯示之前做,並確保使用頁面ID。同樣在你的小提琴頂部下拉菜單從onload更改爲無包裝(頭)。過去我曾遇到過這方面的問題。

$(document).on("pageinit", "#thepageid", function(event) { 
    $('label').addClass("ui-hidden-accessible");  
});​ 

這將適用於您所有的JQM頁面。

$(document).on("pageinit", "[data-role=page]", function(event) { 
    $('label').addClass("ui-hidden-accessible");  
});​