【发布时间】: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