如何捕捉滚动事件?

con*_*ile 8 javascript jquery infinite-scroll

我想实现无限滚动.以下是我的布局的简短形式.由于我有一些相对定位的元素,因此javascript滚动事件不会触发.

我怎样才能解决这个问题,以便触发滚动事件并实现无限滚动?

我的主要布局是:

<div id="container">
    <div class="wrapper">
        <div id="header">
        ...
        </div> <%-- header --%>

        <div id="main">
        ...
        </div>

    </div> <%-- wrapper --%>
</div> <%-- container --%>
<div id="footer">
</div>
Run Code Online (Sandbox Code Playgroud)

我的CSS是:

#container {
    position: absolute;
    z-index: 1;
    top: 0;
    bottom: 35px;
    left: 0;
    right: 0;
    overflow-y: auto;      
    overflow-x: hidden;      
}

.wrapper {
    margin: 0 auto;
    width: 960px;
    position: relative;
}   

#header {
    position: relative;
}

#main {
}

#footer {
    z-index: 2;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 35px;
} 
Run Code Online (Sandbox Code Playgroud)

我需要更改什么才能使用我的布局接收浏览器滚动事件以实现无限滚动?

con*_*ile 14

实现它的正确方法是:

 <div id="container" onScroll="handleOnScroll();">

<script>
function handleOnScroll() {
        alert("scroll");
    };
</script>
Run Code Online (Sandbox Code Playgroud)

  • 为什么这比我的解决方案更好? (13认同)
  • -1没有利用jQuery的强大功能来避免使用内联JavaScript.我也没有看到这与"无限"滚动有什么关系. (3认同)
  • 尽管这可能不是一个好的解决方案,但它是对问题的完美回答。这个问题与代码质量无关,也与 jQuery 无关。这只是一个基本的“你如何做X?” 问题。很多人不使用jQuery,甚至用其他语言编译成JS,所以这个答案仍然告诉他们需要了解什么。 (3认同)
  • 是的,没有内联JavaScript的任何工作答案都会更好. (2认同)

Spa*_*rky 8

编辑:因为你用标记你的问题...


scroll使用jQuery 捕获事件...

HTML:

<div id="container">
    CONTENT
</div> 
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$(document).ready(function() {

    $('#container').scroll(function() {
        alert('scroll');
        // presumably your infinite scrolling code here
    });

});
Run Code Online (Sandbox Code Playgroud)

请参阅:http: //api.jquery.com/scroll/