2011-10-05 11 views
9

私はボタンを押した後にユーザーに何らかの持続的なフィードバックを提供したいと思います(インデントされたものなど)。私は試した:jQueryモバイルでデータテーマを変更する

$(this).data('theme','b'); 

しかし、それは動作しません。

Q:インデントされたボタンを表示する方法はありますか?またはそのボタンをdata-themeでオンザフライで変更しますか?

+0

私はclass = "ui-btn-up-a、ui-btn-up-b、ui-btn-up-c、ui-btn-up-d、ui-btn- up-e " –

+0

ほとんど動作しますが、jQueryが戻って、対応するui-btnを後で再割り当てします。 –

答えて

16

私はこれが古い質問であることを知っていますが、私は最近この障害に直面しています。

次のようにこれを行うための正しい方法は次のようになります。

$(this).buttonMarkup({theme: 'b'}); 
+0

.button( 'refresh')を呼び出す必要はありません – Alexandre

+0

ありがとう、Alexandre。私は答えを更新しました。 – Fraz0r

+0

ありがとうFraz0r!私はボタンの代わりにリスト項目のテーマを変更しようとしているので、この問題を再訪しました。 –

2

を提出ボタンの形の内側に、これはjQueryのモバイル1.2.0を使用して、私の仕事:

$(this).buttonMarkup({theme: 'b'}); 
$(this).parent().buttonMarkup({ theme: "b" }); 
+0

ありがとうRebelAlliance!知るべきことがたくさんある! –

7

私が持っていますjQuery Mobileでグローバルにテーマを動的に変更する方法(ボタンをクリックするなど)を探していました。私が想像した以上に複雑になってしまった。とにかく、ここでSOと他のサイト上のさまざまなソリューションに触発され、この上の私の感想です:

// Dynamically changes the theme of all UI elements on all pages, 
// also pages not yet rendered (enhanced) by jQuery Mobile. 
$.mobile.changeGlobalTheme = function(theme) 
{ 
    // These themes will be cleared, add more 
    // swatch letters as needed. 
    var themes = " a b c d e"; 

    // Updates the theme for all elements that match the 
    // CSS selector with the specified theme class. 
    function setTheme(cssSelector, themeClass, theme) 
    { 
     $(cssSelector) 
      .removeClass(themes.split(" ").join(" " + themeClass + "-")) 
      .addClass(themeClass + "-" + theme) 
      .attr("data-theme", theme); 
    } 

    // Add more selectors/theme classes as needed. 
    setTheme(".ui-mobile-viewport", "ui-overlay", theme); 
    setTheme("[data-role='page']", "ui-body", theme); 
    setTheme("[data-role='header']", "ui-bar", theme); 
    setTheme("[data-role='listview'] > li", "ui-bar", theme); 
    setTheme(".ui-btn", "ui-btn-up", theme); 
    setTheme(".ui-btn", "ui-btn-hover", theme); 
}; 

私もまだJQMで示されていないページのテーマを更新したかったので、関係するいくつかの追加の複雑さがあります。セレクタとテーマクラスのペアでコードを構造化することで、これをより明確にすることができました。

あなたは、たとえば、動的にすべてのUI要素のテーマを更新するには、この関数を呼び出すことができます。

$.mobile.changeGlobalTheme("b"); 

私も、正規表現を使用して、私が見てきたソリューションを好きですが、この場合には、私はアプローチを好みます新しい項目を追加することの明快さと容易さのために、セレクタとテーマクラスを明示的に記述する必要があります。私はセレクタ/クラスペアをDOMツリーを調べて理解しました。

現代のJavaScriptコードのLisp風味に感謝します。

+0

ありがとうミカエル! JavaScriptに関する感謝の気持ちを分かち合うかどうか分かりませんが、今はもっと慣れ親しんでいます。 –

関連する問題