【问题标题】:Using the window resize function to keep variables uptodate?使用窗口调整大小功能使变量保持最新?
【发布时间】:2013-08-09 02:19:57
【问题描述】:

我有点困惑如何在调整窗口大小时使我创建的一些变量保持最新,以便我的滚动函数继续获取正确的值。基本上,我有多个元素,其中包含一条消息,当用户将元素滚动到视口高度的 50% 高度时,就会显示该消息。这工作正常,但我的问题是当我调整大小时我不确定如何更新我的变量boxHeight, elementOffset, verticalMatch,它可以控制我需要在滚动事件中使用的值。我想知道有人可以帮助解释我如何解决这个问题吗?

我的代码是这样的

 var windowHeight = $(window).height(),
    headerHeight = $('.header').height();

$('.box').each(function (i,e) { 

    var el = $(e);

    var boxHeight = el.height(),
        elementOffset = el.offset().top,
        verticalMatch = (windowHeight / 2) + (headerHeight / 2) - (boxHeight / 2);

    $(window).on('scroll', function () {
        var scrollTop = $(window).scrollTop(),
            distance = elementOffset - scrollTop;

        if( distance <= verticalMatch ) {
           el.addClass('is-active');
        }       

    });
});


$(window).on('resize', function() {
    windowHeight = $(window).height()
    elementOffset = $('.box').offset().top;

    $('.box').each(function (i,e) { 

        var el = $(e);

        //update boxHeight, elementOffset, verticalMatch
        verticalMatch = (windowHeight / 2) + (headerHeight / 2) - (boxHeight / 2);
    });
});

这是 JS Fiddle:http://jsfiddle.net/fm4z7/2/

如果有人能解释我是如何做到这一点的,那就太好了!

【问题讨论】:

  • 用简单的赋值语句更新它们的值怎么样? (无论如何,您的“滚动”处理程序并不关注“windowHeight”变量。)

标签: javascript jquery


【解决方案1】:

如果您只想在调整大小事件期间更新您的大小变量,那么就这样做:

$(window).on('resize', function() {
    windowHeight = $(window).height();
    elementOffset = $('.box').offset().top;
});

您的变量是全局变量,因此可以在任何地方访问它们。

【讨论】:

  • 对不起,我忽略了我的 verticalMatch 变量,我如何让这个计算保持最新?
  • @styler 就像在原始声明中一样再次设置它。
  • @Lochemage 好的,谢谢,我还有一个问题希望您能提供帮助,我想设置脚本,这样当框与 verticalMatch 匹配时,我有多个元素单独出现,我的问题使用 resize 函数,因为这次我的变量不是全局的。你能告诉我如何解决这个问题吗? jsfiddle.net/fm4z7/2
  • 这是一个新的jsfiddle.net/fm4z7/3。我已经对您的代码进行了相当大的更改,但基础是:我现在将单个元素数据存储为元素 jquery data() 而不是我自己的 var 的一部分,并且我已将滚动事件处理程序移动为单个事件而不是每个盒子一个。小提琴也有我正在做的事情。
  • 这看起来很完美,非常感谢所有注释代码和帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2010-10-24
  • 2015-02-11
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多