【问题标题】:jQuery orientation with $(window).resize ooopsjQuery 方向与 $(window).resize 哎呀
【发布时间】:2013-03-06 17:45:23
【问题描述】:

我正在努力实现以下目标: 我正在开发的网站在横向模式下效果更好。 我希望当设备处于纵向时显示一条消息,而在横向时不显示消息。

我在 ready() 函数中编写了以下代码:

    $(window).resize( function(){

    var height = $(window).height();
    var width = $(window).width(); 

    if(width>height) {
        // Landscape
        $("#landscape").css('display','none');
    }   
    else {
        // Portrait
        $("#landscape").css('display','block');
        $("#landscape").click(function(){
            $(this).hide();
        });
    }

但是当页面加载(或我刷新它)时,它总是显示消息(因为它应该只在纵向模式下)。如果我然后更改浏览器大小,则代码开始工作并相应地显示/隐藏消息。 我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: jquery orientation window-resize landscape-portrait


    【解决方案1】:

    $(window).resize()之后调用.resize()

    $(window).resize( function(){
    
      var height = $(window).height();
      var width = $(window).width(); 
    
      if(width>height) {
        // Landscape
        $("#landscape").css('display','none');
      } else {
        // Portrait
        $("#landscape").css('display','block');
        $("#landscape").click(function(){
            $(this).hide();
        });
      }
    }).resize(); // <----this way
    

    【讨论】:

      【解决方案2】:

      当 DOM 准备好时触发你的函数。

      $(function() {
          $(window).resize();
      });
      

      【讨论】:

      • 我试过了,但即使浏览器在刷新时处于“横向模式”,我仍然会收到消息...
      • ...我还注意到刷新时该功能不起作用。当我单击消息时它不会隐藏(但它会在调整浏览器大小时显示消息时隐藏)...
      【解决方案3】:

      ready() 函数只会在加载时触发一次。您需要将其置于 ready 函数之外,并在加载时调用它一次,然后在窗口已重新调整大小时工作。

      另外,在使用 $(window).resize 的时候,一定要设置一个时间延迟来防止多个并发发生,这个已经讲过很多次了:

      JavaScript/JQuery: $(window).resize how to fire AFTER the resize is completed?

      jQuery - how to wait for the 'end' of 'resize' event and only then perform an action?

      不确定您的项目范围是什么,但仅根据方向来处理项目通常被认为是一种不好的做法;特别是在您的横向功能(宽度>高度)中。如果页面宽度跨度为 1280,高度为 500,该怎么办?除非您还使用设备检测,否则您的逻辑不会始终成立。

      【讨论】:

      • 谢谢。我已经进行了媒体查询,因此该网站可以在纵向和横向模式下工作。但我仍然想要一条消息通知用户景观设计更好。然后由用户决定是否继续纵向(单击)更改为横向(旋转)。但是谢谢你,这是一个很好的提示......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2019-02-13
      • 2011-04-13
      • 1970-01-01
      相关资源
      最近更新 更多