防止身体滚动鼠标滚轮,但不要滚动textarea

时间:2012-01-11 22:52:18

标签: javascript jquery html css mousewheel

这是一个例子: http://jsfiddle.net/cB3jZ/15/

当您使用鼠标滚轮滚动到textarea的底部时,它会继续滚动页面的其余部分..我该如何防止这种情况发生!?

当我鼠标悬停在textarea上时,我可以使用此脚本禁用滚动: https://stackoverflow.com/a/4770179/973485 但我仍然希望textarea可以滚动。

http://jsfiddle.net/cB3jZ/15/

希望你能帮忙! :=)

2 个答案:

答案 0 :(得分:1)

使用jQuery鼠标滚轮插件:

jQuery(function($) {
    $('textarea')
        .bind('mousewheel', function(event, delta) {      
            if (this.scrollHeight && this.scrollHeight <= $(this).height() + $(this).scrollTop() && delta < 0){ 
               event.preventDefault()
            } else if($(this).scrollTop()===0 &&  delta > 0){
               event.preventDefault()
            }
        });
});

我必须警告你,它在IE7或更早版本中不起作用(但它不会抛出错误,所以很酷)

http://jsfiddle.net/cB3jZ/36/

答案 1 :(得分:1)

我发现如果外部容器是body标签,它只会继续滚动。所以,如果你这样,它就可以了!

<style>
   body,html {height:100%;}
   #fakeBody {height:100%; overflow:auto;}
</style>
<body>
<div id="fakeBody">
    <!-- popup with a textarea inside -->
</div>
</body>

http://jsfiddle.net/cB3jZ/34/