Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery工具触摸水平仅禁用垂直触摸_Jquery_Scroll_Touch_Gesture_Swipe - Fatal编程技术网

Jquery工具触摸水平仅禁用垂直触摸

Jquery工具触摸水平仅禁用垂直触摸,jquery,scroll,touch,gesture,swipe,Jquery,Scroll,Touch,Gesture,Swipe,我有jquery工具滚动条。。。我喜欢只为swipeLeft swipeRight实现触摸选项 当我使用touch:true时,它在向上/向下滑动时也会旋转 我按照这里的指示: 在这里: 但似乎都不管用。。有什么想法吗?下面是我的提琴/演示供参考 小提琴: 演示: 谢谢如果您使用的唯一控件是可滚动的,那么您可以从中编辑该控件的源代码,以修复该行为或根据需要调整它 我修改了您发布的代码,在JavaScriptcode部分包含了可滚动控件的代码 添加到控件代码中的行是以下代码段末尾带有注释//a

我有jquery工具滚动条。。。我喜欢只为swipeLeft swipeRight实现触摸选项

当我使用touch:true时,它在向上/向下滑动时也会旋转

我按照这里的指示:

在这里:

但似乎都不管用。。有什么想法吗?下面是我的提琴/演示供参考

小提琴:

演示:


谢谢

如果您使用的唯一控件是可滚动的,那么您可以从中编辑该控件的源代码,以修复该行为或根据需要调整它

我修改了您发布的代码,在
JavaScript
code部分包含了可滚动控件的代码

添加到控件代码中的行是以下代码段末尾带有注释
//added

    // touch event
    if (conf.touch) {
        var touch = {};

        itemWrap[0].ontouchstart = function(e) {
            var t = e.touches[0];
            touch.x = t.clientX;
            touch.y = t.clientY;
        };

        itemWrap[0].ontouchmove = function(e) {

            // only deal with one finger
            if (e.touches.length == 1 && !itemWrap.is(":animated")) {            
                var t = e.touches[0],
                     deltaX = touch.x - t.clientX,
                     deltaY = touch.y - t.clientY,
                     absX = Math.abs(deltaX),                              // added
                     absY = Math.abs(deltaY);                              // added

                // Only consider the event when the delta in the
                // desired axis is greater than the one in the other.
                if(vertical && absY > absX || !vertical && absX > absY)    // added
                    self[vertical && deltaY > 0 || !vertical && deltaX > 0 ? 'next' : 'prev']();

                e.preventDefault();
            }
        };
    }

我已经在Android上用本机浏览器和Opera浏览器尝试过这个方法,并且似乎可以像预期的那样工作。

我曾经为同样的问题挣扎过一段时间,直到找到以下修复方法-

初始化-

var $scroller1 = $('#outer-container1').kinetic({'y':false});
这会阻止容器上的垂直滚动,但不会将垂直滚动交给浏览器滚动器

然后转到jquery动能源代码,注释掉所有鼠标和滚动动作事件的
e.preventDefault()

这个黑客帮了我的忙。

我试图修改代码,但运气不好。。。我设置了
deltaY=0
和'vertical&&deltaY>0 | | `但不起作用。。。但是你的解决方案是:)你能告诉我什么?Mean?使用
表示内联
if
语句,其结构是
布尔表达式?然后expr:else expr
|
只是内联
if
语句的
布尔表达式中使用的逻辑
运算符。有关
操作员的更多信息,请检查此SO问题:在它的位置有一个小错误,例如preventDefault();防止在刷卡时向下滚动页面。。。固定版本在这里,这在做了一次修改后工作得很好。e.preventDefault应该是if语句的一部分,否则垂直滚动不会滚动页面。