簡體   English   中英

如何在jQuery Mobile中動態設置'data-collapsed'和'data-theme'?

[英]how to dynamically set the ' data-collapsed' and 'data-theme' dynamically in jQuery Mobile?

我在運行時動態設置'data-theme'和'data-collapsed'時遇到問題,我用過:

$(selector).attr('data-collapsed',false) 

$(selector).attr('data-theme',b) 

但它不起作用,如何使用jQuery或javascript解決這個問題?

你可以使用pagebeforecreate事件

請注意,通過綁定到pagebeforecreate,您可以在jQuery Mobile的默認窗口小部件自動初始化之前操作標記。 例如,假設您要通過JavaScript而不是HTML源添加數據屬性,這就是您要使用的事件。

例:

JS

$('#home').live('pagebeforecreate',function(event) {
    var col = $('#collapseMe');

    // Alternative settings
    //col.attr('data-collapsed','false');
    //col.attr('data-theme','b');

    col.data('collapsed',false);
    col.data('theme','b');
});

HTML

<!DOCTYPE html>
<html class="ui-mobile-rendering">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>jQuery Mobile: Demos and Documentation</title>
    <link rel="stylesheet"  href="http://jquerymobile.com/test/css/themes/default/jquery.mobile.css" />

    <script src="http://jquerymobile.com/test/js/jquery.js"></script>
    <script src="http://jquerymobile.com/test/js/jquery.mobile.js"></script>

</head>
<body>
<div data-role="page" id="home">
    <div data-role="content">
        <div data-role="collapsible" data-theme="a" data-content-theme="a" id="collapseMe">
           <h3>Header swatch A</h3>
           <p>I'm the collapsible content with a themed content block set to "A".</p>
        </div>
    </div>
</div>
</body>
</html>
​

您可以使用,

$(".selector").collapsible( "option", 'collapsed',false );

要么

$(".selector").collapsible({ collapsed: false });

您真的不能只是更改data- *屬性並期望JQM重新設置您的頁面。 在大多數情況下,當您添加新標記(如添加列表元素)並希望JQM增強這些新項目時,會使用“刷新”。 大多數表單元素小部件都有一個類似.checkboxradio()的方法來更新底層本機控件的增強標記。 也就是說,如果以編程方式更改所選單選按鈕,則需要調用.checkboxradio('refresh'),以便更新增強版本。

順便說一句:你真的應該學習如何使用jsfiddle.net,以便人們可以看到你嘗試過的東西。 回應“它不起作用!” 沒有幫助,因為我們無法判斷您是否正確應用了解決方案,或者特定標記是否導致問題。 您應該創建最簡單的標記和javascript來識別您的問題。 這將有助於每個人在極大地幫助你。

無論如何,我已經創建了一個以編程方式折疊/展開可折疊的樣本。 正如您所知,這只是觸發可折疊的展開/折疊事件的問題。 JQM沒有提供一種方法來確定它是否已折疊,因此您必須查看是否存在特定類。

我在這里有一個例子: http//jsfiddle.net/kiliman/pEWJz/

$('#page').bind('pageinit', function(e, data) {
    // initialize page
    var $page = $(this);
    $('#toggle-collapsible').click(function() {
        var $collapsible = $('#collapsible'),
            isCollapsed = $collapsible.find('.ui-collapsible-heading-collapsed').length > 0;

        $collapsible.trigger(isCollapsed ? 'expand' : 'collapse');
    });
});

你會在JQM中注意到你有時需要知道增強的標記是什么樣的並且操縱它。

例如,一旦頁面增強,目前無法動態更改主題。 您基本上必須去替換所有類以使用正確的主題。 例如,將.ui-body-c更改為.ui-body-e。

這個答案有一個很好的例子,展示了如何更改各種元素的主題。

動態更改jquery移動顏色樣本

這是一個簡短的代碼片段,說明如何完成此任務:

$('#collapseMe').trigger('collapse'); 

以此為例:

$(selector).attr('data-theme','b').trigger('create');

http://jquerymobile.com/demos/1.1.0-rc.1/docs/pages/page-scripting.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM