【问题标题】:How to remove button text responsively in JQuery Mobile如何在 JQuery Mobile 中删除响应式按钮文本
【发布时间】:2014-07-03 18:02:52
【问题描述】:

我对 Jquery 和 jquery mobile 非常陌生。我正在调整按钮的大小,以便它响应窗口大小。更具体地说,我将其从 iconpos="left" 更改为 iconpos="notext" 以删除小窗口上的文本。 我找到了以下对我有用的函数。

$(window).on("throttledresize", function() {
  var smallButtons = $(window).width() <= 480;
  $('#menu_toggle').toggleClass('ui-btn-icon-notext', smallButtons);
  $('#menu_toggle').toggleClass('ui-btn-icon-left', !smallButtons);
});

但它仅适用于调整窗口大小。显然,我也希望它在页面加载时显示正确的大小,而不仅仅是调整大小。我找到了下面的代码,但我不知道如何将它们都放入 1 更简洁的代码中。

$("#page_id").on("pageshow" , function() {
 The Function
});

【问题讨论】:

    标签: jquery-mobile jquery-mobile-button


    【解决方案1】:

    jQuery 移动 >= 1.4

    .buttonMarkup()data-role="button" 已弃用,将在 1.5 中删除。相反,应该手动将类添加到 Anchor 标记中。

    • 创建一个函数来操作 Anchor 的类。从 jQM 开始,页面事件现在被替换为 pageContainer 事件。新事件不能绑定到特定页面,因此,您需要在活动页面中寻找Anchor

      请注意,$.mobile.activePage 也已弃用并替换为 $.mobile.pageContainer.pagecontainer("getActivePage")

      function resizeBtn() {
          var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
          if ($(window).width() <= 480) {
              $("#notext.ui-btn-icon-left", activePage)
                  .toggleClass("ui-btn-icon-notext ui-btn-icon-left");
          } else {
              $("#notext.ui-btn-icon-notext", activePage)
                  .toggleClass("ui-btn-icon-left ui-btn-icon-notext");
          }
      }
      
    • pagecontainerbeforeshow 事件上的调用函数:

      $(document).on("pagecontainerbeforeshow", resizeBtn);
      
    • throttledresize事件上调用函数:

      $(window).on("throttledresize", resizeBtn);
      

    注意:throttledresize 优于 resize,因为它会延迟触发来自浏览器的 resize 事件。

    Demo


    jQuery 移动

    如果您使用的是 jQuery Mobile 1.3 或更低版本,则需要使用 .buttonMarkup()

    $(".selector").buttonMarkup({
      iconpos: "notext"
    });
    
    • 调整大小功能:

      function resizeBtn() {
          if ($(window).width() <= 480) {
              $(".selector").buttonMarkup({
                  iconpos: "notext"
              });
          } else {
              $(".selector").buttonMarkup({
                  iconpos: "right"
              });
          }
      }
      
    • pagebeforeshow上调用函数:

      $(document).on("pagebeforeshow", resizeBtn);
      
    • resize上调用函数:

      $(window).on("resize", resizeBtn);
      

    Demo

    【讨论】:

    • 谢谢,我正在尝试您的回复 atm。看起来不错。那么jquery1.5出来了吗?我才刚刚开始了解 1.4 的想法。感谢您的回复。
    • @devsie 不客气。我做了一个小改动pagecontainerbeforeshow。我不认为它会很快出来,.buttonMarkup() 应该可以正常工作,但为了安全起见,考虑删除并坚持工作功能:)
    • 使用调整大小是否也比限制调整大小更好?如果用 class="ui-btn" 做事目前有效并且是前进的方向,那么我会这样做,而不是在未来再次改变它们。
    • @devsie throttledresize 更好。你也可以使用orientationchangethrottledresize
    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多