Tengo un control deslizante e hice un código que va al lado y al anterior con el desplazamiento del mouse. Pero no funciona bien con mac y touchpad. ¿Cómo puedo arreglarlo? ¿Puedo poner algún retraso o algo? Intenté usar algún setTimeout pero no funcionó bien o no lo hice bien.
$('#body').on('mousewheel', function (event) { if (typeof event.originalEvent.wheelDeltaY === 'undefined') { console.log("could not find mouse deltas") } var deltaY = event.originalEvent.wheelDeltaY; var scrolledUp = deltaY < 0; var scrolledDown = deltaY > 0; if (scrolledDown) { if (swiper_color.activeIndex > 2) { goTop(); activeIndexToTwo(); } else { swiper_color.slidePrev(); swiper_image.slidePrev(); swiper_desc.slidePrev(); swiper_title.slidePrev(); swiper_jar.slidePrev(); } } if (scrolledUp) { if (swiper_color.activeIndex < 2) { swiper_color.slideNext(); swiper_image.slideNext(); swiper_desc.slideNext(); swiper_title.slideNext(); swiper_jar.slideNext(); } else { checkscroll(); } } });Recomendaría acelerar la función. Puede escribir una función de aceleración o usar una de una biblioteca como Lodash ( Lodash throttle docs )
function yourFn (event) { // ... all of your js here // ... } $('#body').on('mousewheel', _.throttle(yourFn, 100));Los 100 (ms) anteriores significan que su función solo puede activarse cada 100 ms, siéntase libre de modificar el tiempo a su gusto.