滚动事件未触发

时间:2016-04-24 19:01:20

标签: jquery scroll zurb-foundation

我在http://www.alessandrosantese.com/aldemair-productions/project.html

有以下内容:
$('.main-wrapper').on('scroll', function(){
    console.log('ffsdfsd');
});

但它没有开火,我需要知道主包裹器一击到标题,我就可以制作" secondary-nav"也固定了。

这几乎奏效了:

// $('.off-canvas-wrapper').on('scroll', function(){
//  console.log($('.off-canvas-wrapper').scrollTop());
//  if($('.off-canvas-wrapper').scrollTop() == 418 || $('.off-canvas-wrapper').scrollTop() > 417) {
//      $('.secondary-nav').addClass('fixed-nav');
//  }
//  else {
//      $('.secondary-nav').removeClass('fixed-nav');
//  }
// });

但不幸的是" $(' .off-canvas-wrapper')。scrollTop()"根据窗口调整大小的时间进行更改。

2 个答案:

答案 0 :(得分:1)

问题在于您将滚动事件附加到.main-content元素。

根据jQuery documentation,滚动事件仅适用于窗口对象,可滚动框架/元素。

  

当用户滚动到a时,滚动事件被发送到元素   元素中的不同位置。它适用于窗口对象,但也适用   具有溢出CSS属性集的可滚动框架和元素   滚动

尝试将滚动事件附加到窗口对象并检查scrollTop.main-content顶部。

$(function() {

  var $main = $(".main-wrapper"),
    top = $main.offset().top;

  function affix() {
    var scrollTop = $(window).scrollTop();

    if (top < scrollTop) {
      // apply css to fix navigation
      alert('affix navigation');
      $('.secondary-nav').addClass('fixed-nav');
    } else {
      $('.secondary-nav').removeClass('fixed-nav');
    }
  }

  $(window).scroll(affix);

});
.top-content {
  height: 500px;
}
.main-wrapper{
  height: 800px;
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="top-content">
  <p>scroll down</p>
</div>
<div class="main-wrapper">
  <p>content here</p>
</div>

答案 1 :(得分:0)

我认为你可以通过错误的元素将事件应用到。试试这个:

$(window).on('scroll', function(){
     console.log('ffsdfsd');
});