【问题标题】:jQuery mobile dynamically added theme to pagejQuery mobile 动态添加主题到页面
【发布时间】:2013-04-21 19:53:17
【问题描述】:

我正在使用 jQuery mobile 动态构建一个新页面。我现在想添加主题,即 data-theme="a" 。有没有更简单的方法来做到这一点?目前看起来我会将它添加到下面的每个 div 中。

 var newPage = $("<div data-role='page' id='" + v["id"] +
                "'><div data-role=header><a data-iconpos='left' data-icon='back' href='#' data-role='button' " +
                "data-rel='back'>Back</a>" +
                "<h1>" + v["name"] + "</h1>" +
                "</div>" +
                "<div data-role=content>" + pagecontent +
                "</div>" +
                "<div data-role='footer'>" +
                "<h4>" + v["name"] + "</h4>" +
                " </div>" +
                "</div>");


            // Append the new page info pageContainer
            newPage.appendTo($.mobile.pageContainer);

即如果有这样的东西就好了....

 newPage.appendTo($.mobile.pageContainer).theme('a');

【问题讨论】:

    标签: jquery jquery-mobile


    【解决方案1】:

    更新 - jQuery Mobile 1.4

    使用.page({"theme"}).page("option", "theme") 时有一个bug in .page() widget。它不会删除当前的主题类,但是会添加新的主题类。然而,新类不会覆盖旧类。所以这里是修复。

    (function($, undefined) {
      $.widget("mobile.page", $.mobile.page, {
        _setOptions: function(o) {
          if (o.theme !== undefined) {
            this.element
              .removeClass(function(i, c) {
                return (c.match(/\bui-page-theme-\w/g) || []).join(' ');
              })
              .addClass("ui-page-theme-" + o.theme);
          }
        }
      });
    })(jQuery);
    

    注意: jQuery Mobile 中的默认主题是 "a"


    要为动态创建的页面设置主题,请在附加页面之后使用$('.selector').page({theme:'e'});,然后再使用$.mobile.changePage() 导航到它们。

    对于特定页面:

    $('.selector').page({theme:'e'});
    

    对于所有页面:

    $('[data-role=page]').page({theme:'e'});
    

    Demo - 更新了 .page() 修复

    【讨论】:

      【解决方案2】:

      我用这个,效果很好:D

      Mikael Kindborg answer from Change data-theme in 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-page-theme", 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);
          };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-23
        • 2012-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        相关资源
        最近更新 更多