0

我需要在移动网站中使用一些溢出滚动元素,并且很少有版本,例如,Android 不会处理它们。

此代码启用触摸滚动:

function touchScroll(id){
            if(isTouchDevice()){ //if touch events exist...
                var el=document.getElementById(id);
                var scrollStartPos=0;
                document.getElementById(id).addEventListener("touchstart", function(event) {
                    scrollStartPos=this.scrollTop+event.touches[0].pageY;
                    event.preventDefault();
                },false);

                document.getElementById(id).addEventListener("touchmove", function(event) {
                    this.scrollTop=scrollStartPos-event.touches[0].pageY;
                    event.preventDefault();
                },false);
            }
        }
        touchScroll('cHolder');

我对其进行了测试,它适用于#cHolder。但是我需要如何更改它(我不介意使用 jquery 语法)以便它适用于类?问题是我的布局中有多个这样的容器

有什么想法吗?

4

2 回答 2

1

像这样的东西应该工作。

function touchScroll(id) {
    if (isTouchDevice()) { //if touch events exist...
        var els = document.getElementsByClassName(id);
        var scrollStartPos = 0;
        for (var i = 0; i < els.length; i++) {
            els[i].addEventListener("touchstart", function (event) {
                scrollStartPos = this.scrollTop + event.touches[0].pageY;
                event.preventDefault();
            }, false);

            els[i].addEventListener("touchmove", function (event) {
                this.scrollTop = scrollStartPos - event.touches[0].pageY;
                event.preventDefault();
            }, false);
        }
    }
}
touchScroll('cHolder');
于 2013-07-02T07:53:50.790 回答
0

好吧,你可以var el=document.getElementById(id)用 jQuery 语法替换:

var el = $(id).get(0);

这实际上将创建一个 jQuery 选择器,然后获取 DOM 对象。

然后我建议您将document.getElementById(id)第 5 行和第 9 行替换为el

然后你可以将任何选择器传递给函数,它会得到那个元素!

于 2013-07-02T07:52:40.317 回答