iscroll嵌套着iscroll

起初是最外框用iscroll滚动,文本框里的滚动条没有操作反应,于是给文本框也添加iscroll实例化。这时候发现
iscroll嵌套着iscroll,当滑动文本框时,最外框也跟着同步滚动,请问怎么写才能不触发最外框iscroll操作。
或者怎么弄让外框和文本框各滚各的?
图片描述

阅读 6k
评论
    4 个回答

    楼主是不是把默认的滚动事件给禁止了。
    如果你禁止了默认的滚动事件这个时候文本内容溢出的时候,你滚动确实没有效果。
    个人认为只要文本框不是作为外面第一个滚动的div的一级子元素实现各执滚动式ok的。但是你要有两个实例化的对象,他们两者不能共用一个,且文本框的有一个父元素,和第一个滚动的div一样。

      在内部iscroll滚动时候设置阻止事件冒泡,外层捕获不到就可以了

        • 4.6k

        我也遇到了这样的问题,不过在 iscrollissue 上已有解答方案,亲测有效,基本思路:

        const innerScroll = new IScroll($inner, {
            ouseWheel: true,
            tap: false,
            scrollbars: true,
            interactiveScrollbars: true,
            preventDefault: true,
            mouseWheel: true
        });
        
        // 滚动时禁用外层滚动,内层滚到顶或滚到底重新启用外层滚动,滚动结束也重新启用外层滚动
        innerScroll .on('scrollStart', function () {
            if ((this.directionY === 1 && this.y === this.maxScrollY) || (this.directionY === -1 && this.y === 0)) {
                outScroll && outScroll.enable();
            } else {
                outScroll && outScroll.disable();
            }
        });
        
        innerScroll .on('scrollEnd', function () {
            outScroll&& outScroll.enable();
        });

        参考 githubissue

          该答案已被忽略,原因:

            撰写回答

            登录后参与交流、获取后续更新提醒

            相似问题
            推荐文章