Javascript 禁用触控物化旋转木马

Javascript 禁用触控物化旋转木马,javascript,html,materialize,Javascript,Html,Materialize,看来以前没有人问过这个问题,因为我在互联网上搜索了很多,想找到一个非常简单的答案 如何禁用在materialize carousel上向左/向右滑动的功能?这远不是一个完美的解决方案,而且在您的情况下,它可能会禁用太多的功能,我不确定。如果您能选择打开/关闭此功能,将不胜感激 但出于我的需要,关闭旋转木马上的活动起到了作用: var carousel = $('.carousel.carousel-slider').carousel(); // Disable all swipping on c

看来以前没有人问过这个问题,因为我在互联网上搜索了很多,想找到一个非常简单的答案


如何禁用在materialize carousel上向左/向右滑动的功能?

这远不是一个完美的解决方案,而且在您的情况下,它可能会禁用太多的功能,我不确定。如果您能选择打开/关闭此功能,将不胜感激

但出于我的需要,关闭旋转木马上的活动起到了作用:

var carousel = $('.carousel.carousel-slider').carousel();
// Disable all swipping on carousel
if (typeof window.ontouchstart !== 'undefined') {
    carousel.off('touchstart.carousel');
}
carousel.off('mousedown.carousel');

在过去的三天里,我一直试图解决这个问题,并得出结论,除了直接编辑materialize.js文件(如Lester的回答中所示)之外,没有什么干净的解决方案。不幸的是,这不是一个理想的解决方案,因为它在更新Materialize等时会导致问题。
在这段时间之后,我提出的最简单的解决方案是以下一段javascript:

window.onload = function() {    
    window.mouseDownNow = false;
    // The selector below must be more specific than .carousel.carousel-slider in
    // order for the event to be cancelled properly.
    $('.class-added-to-block-swiping-functionality')
    .mousedown(function() {
        window.mouseDownNow = true;
    })
    .mousemove(function(event) {
        if(window.mouseDownNow) {
            event.stopPropagation();
        }
    })
    .mouseup(function() {
        window.mouseDownNow = false;
    });
};
这将简单地阻止事件冒泡到物化刷卡功能。

注意:我不确定选择器的具体程度,我的是特定于文本区域的类。

在Materialize.js add/edit中:

var allowCarouselDrag = true;
value: function _handleCarouselDrag(e) {
    if(allowCarouselDrag){
       ....
    }
}
您可以为每个应用程序设置allowCarouselDrag变量。

我是这样解决的

// Create carouser
$('#carousel').carousel({
            fullWidth: true,
            indicators: false,
            duration: 100,
        });

// Get instance of carousel
carouselInstance = M.Carousel.getInstance(sliderDOM);

// Remove event listeners added by Materialize for corousel
document.getElementById("carousel").removeEventListener('mousedown', carouselInstance._handleCarouselTapBound);
document.getElementById("carousel").removeEventListener('mousemove', carouselInstance._handleCarouselDragBound);
document.getElementById("carousel").removeEventListener('mouseup', carouselInstance._handleCarouselReleaseBound);
document.getElementById("carousel").removeEventListener('mouseleave', carouselInstance._handleCarouselReleaseBound);
document.getElementById("carousel").removeEventListener('click', carouselInstance._handleCarouselClickBound);
之后,拖动/滑动被禁用,您仍然可以通过

carouselInstance.set(0);


我在Materialize docs中看不到任何选项,但是你可以在旋转木马上放置一个透明的覆盖层,这将阻止任何形式的交互。我不想阻止所有形式的交互,只是简单的滑动功能。我将为用户提供向前和向后的按钮。垂直拖动=true;您应该从问题中添加一个解释,说明这是如何解决问题的。我已经很久没有使用materialize.js了,不再需要该解决方案,但是如果有人偶然发现这需要相同的东西,这似乎是正确的答案。@Josh我不确定如何将其应用到我的代码中。您能否解释一下您在哪里添加它,或者是否可以从外部JavaScript设置它?
carouselInstance.set(0);
carouselInstance.next(0);