Jquery手风琴在移动滚动上相互映射

时间:2017-07-11 03:49:33

标签: javascript jquery ios accordion

我使用this accordion-style plugin展开并折叠网格每一行下的内容,例如Google图片。

我的计算机上的一切正常,但是当您在iOS设备上查看时,展开的内容会在您滚动时折叠。如果您在iOS设备上进行检查,可以在上面的链接中看到问题。 (Android中也可能存在此问题,但我无法访问该设备。)

滚动问题是由此调整大小函数引起的:

    // adjust colio viewport height on window resize
    $(window).bind('resize orientationchange', function(e){

        // stop propagation if colio is event target
        if(e.target === self.markup.get(0)) {
            e.stopImmediatePropagation();
        }

        // for 'inside' placement hide viewport immediately on resize
        if(self.settings.placement === 'inside' && /^(smart)?resize$/.test(e.type)) {
            self.insideHideViewport();
        }

        // disable page scroll during window resize
        if(!self.temp) {
            self.temp = [self.settings.syncScroll, self.settings.scrollPage];
        }
        self.settings.syncScroll = true;
        self.settings.scrollPage = false;

        // adjust viewport height
        clearTimeout(self.resize_timer);
        self.resize_timer = setTimeout(function(){
            self.expandViewport(self.active_id, true);
            self.settings.syncScroll = self.temp[0];
            self.settings.scrollPage = self.temp[1];
            delete self.temp;
        }, 200);

    });

更具体地说,问题似乎只与这一行有关:

// for 'inside' placement hide viewport immediately on resize
            if(self.settings.placement === 'inside' && /^(smart)?resize$/.test(e.type)) {
                self.insideHideViewport();
            }

如果我仅删除该部分,则修复它。但问题是,我正在使用'内部'展示位置,因此当您调整浏览器大小或更改设备的方向时,此代码对于隐藏展开的div是必需的。否则它看起来很糟糕,因为高度计算已关闭。

似乎将移动滚动视为窗口大小调整。

您是否可以看到修改此代码以维护隐藏调整大小功能的方法,同时解决在移动设备上滚动时导致的问题?

1 个答案:

答案 0 :(得分:0)

问题是iOS滚动会触发resize事件。我在这里找到了一个解决方案:iphone/ipad triggering unexpected resize events

我在检查中包裹了有问题的代码行,看看屏幕的实际宽度是否已经改变。这是我修改后的代码:

MaskedEdittext