0

此代码完美运行,只是它跳过了整个$(window).resize区域。删除除一个变量外的所有变量似乎可以“修复它”,但这显然行不通。

我在这里错过了一个明显的问题吗?控制台中没有错误。如果您想选择它或查看完整的 javascript,这里有一个演示:http: //jdsn.co/demo/reader.html

if( main_reader_height + offset_height > initviewport ) {
    $('.main_reader footer').waypoint(function(event, direction) {
        if (direction === 'down') {
            $('.nav_items, .nav_prev, .nav_next').addClass('snap');
            $(window).resize(function() {
                window.offset = $('.main_reader article').offset().top;
                window.viewport = $(window).height();
                window.main_height = $('.main_reader article').height();
                window.bottom_offset = window.viewport - window.offset - window.main_height - 80
                $('.nav_next').height(viewport - offset - bottom_offset - 80);  
            });
            $('.snap').height(window.bottom_offset)
        }
        else {
            $('.nav_items, .nav_prev, .nav_next').removeClass('snap');
        }
    }, {
      offset: '100%'  // middle of the page
});
4

1 回答 1

0

我看到两个问题:

  1. .resize() 事件仅在航点的第一个回调之后被订阅。此外,每次收到航点事件时,都会为 .resize() 创建一个新订阅者,这可能会导致问题。
  2. window.在定义这些变量时使用的任何真正原因?这会将它们附加到主窗口对象,这实际上是不需要的,并且可能会导致其他问题。

从那里开始,这取决于您期望的行为。查看代码并不能完全传达您要完成的工作。对此的进一步了解可能会产生更多有用的答案。

于 2012-06-10T02:08:22.743 回答