为什么 $(window).resize() 没有在此代码段中触发或返回错误

Why is $(window).resize() not firing or returning errors in this snippet?

本文关键字:段中触 代码 返回 错误 window resize 为什么      更新时间:2023-09-26

这段代码运行良好,除了它跳过了整个$(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
});

我看到两个问题:

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

从那里开始,这取决于您期望的行为是什么。查看代码并不能完全传达您要完成的任务。进一步阐明这一点可能会产生更有用的答案。