【问题标题】:jQuery resize doesn't affect variable and affixjQuery resize 不影响变量和词缀
【发布时间】:2015-01-28 09:08:11
【问题描述】:

我正在尝试将导航栏附加到正确的滚动位置。

我有一个#cover-section 元素,在它下面是一个可附加的导航栏。 #cover-section 元素可调整大小。当它被调整大小时,我也希望修改附加偏移位置,但 coverHeight 变量似乎没有更新。 coverHeight 的值最初为 0,并且始终保持为零。

如何在.resize() 函数范围内获取coverHeight 变量以实际修改在事件范围之外声明的变量值?

$(document).ready(function() {
  var coverHeight;
  coverHeight = 0;

  $(window).resize(function() {
    $('#cover-section').height($(window).height() - $('#navbar').height());
    return coverHeight = $('#cover-section').height();
  });

  $('.affixable-wrapper').height($('.affixable-wrapper > .affixable').height());
  return $('.affixable-wrapper > .affixable').affix({
    offset: coverHeight
  });

});

【问题讨论】:

    标签: javascript jquery scope affix


    【解决方案1】:

    您没有将这些函数的值分配给coverHeight 变量。调整大小没有回报,如果有,你也不会把它归还给任何东西。试试

    $(document).ready(function() {
      var coverHeight = 0;
    
      $(window).resize(function() {
          $('#cover-section').height($(window).height() - $('#navbar').height());
          coverHeight = $('#cover-section').height();
      });
    });
    

    如果你只是绑定到resize to fire affix,那么:

        $(window).resize(function() {
            $('.affixable-wrapper > .affixable').affix({
            offset: $('#cover-section').height($(window).height() -  
    $('#navbar').height());
            }); 
        });
    

    如果您只是在同一个函数中设置和调用它,则不需要 coverHeight var

    【讨论】:

    • 所以coffeescript的隐式返回是问题
    • 我没有得到任何不同的行为。我需要可附加部分代码来引用coverHeight 变量。我应该将“可附加”代码放在别处吗?
    • 更新了答案,如果只想绑定resize调用affix就不需要var了
    • 谢谢,但这也不起作用。 affix 是一个事件监听器,就像 resize 一样。我将如何使用 setTimeout 来确保 affix 函数正在访问更新的 dom 元素(以及 dom 元素的新大小)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多