首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止滚动冒泡

防止滚动冒泡
EN

Stack Overflow用户
提问于 2012-05-09 21:22:54
回答 2查看 4K关注 0票数 10

如何防止卷轴冒泡?

下面的示例不起作用:

代码语言:javascript
复制
<!DOCTYPE html> 
<html> 
    <head> 
        <title>Scroll Bubbling</title>
        <style>
            #menu {
                width: 80px;
                height: 150px;
                background: red;
                overflow: auto;
            }
        </style>
        <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
        <script type="text/javascript">
            function isScrollOnBound( scrollContainer ) {
                if ( $( scrollContainer ).scrollTop() === 0 || 
                     $( scrollContainer ).scrollTop() + $( scrollContainer ).innerHeight() >= $( scrollContainer )[0].scrollHeight ) {
                    return true;
                } else {
                    return false;
                }
            }

            $(function() {                  
                $( '#menu' ).on( 'scroll', function(e) {
                    if ( isScrollOnBound( this ) ) {
                        e.stopPropagation();
                    }                   
                });

                $( window ).on( 'scroll', function(e) {
                    alert( 'stopPropagation not working' );
                });                 
            });     
        </script>
    </head> 
    <body>  
        page 1<br />page 2<br />page 3<br />page 4<br />page 5<br />page 6<br />page 7<br />page 8<br />page 9<br />page 10<br />page 11<br />page 12<br />page 13<br />page 14<br />page 15<br />page 16<br />page 17<br />page 18<br />page 19<br />page 20<br />page 21<br />page 22<br />page 23<br />page 24<br />page 25
        <div id="menu">
            menu 1<br />menu 2<br />menu 3<br />menu 4<br />menu 5<br />menu 6<br />menu 7<br />menu 8<br />menu 9<br />menu 10
        </div>
        page 26<br />page 27<br />page 28<br />page 29<br />page 30<br />page 31<br />page 32<br />page 33<br />page 34<br />page 35<br />page 36<br />page 37<br />page 38<br />page 39<br />page 40<br />page 41<br />page 42<br />page 43<br />page 44<br />page 45<br />page 46<br />page 47<br />page 48<br />page 49<br />page 50
    </body>
</html>
EN

回答 2

Stack Overflow用户

发布于 2012-05-10 02:15:59

您需要将touchmove绑定到document (我认为)并返回false,这意味着不做任何事情。只有在需要时才绑定它(在div中滚动时),然后在滚动完成时解除绑定。

当我不想让它滚动时,我也遇到了同样的问题,这是我唯一能解决这个问题的方法。

如果需要文档不滚动,请执行以下操作:

代码语言:javascript
复制
$(document).bind('touchmove', function(){
    return false;
});

并在完成后解除绑定:

代码语言:javascript
复制
$(document).unbind('touchmove');
票数 1
EN

Stack Overflow用户

发布于 2012-05-16 17:53:20

您可以尝试setContentHeight()来解决您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10517038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档