I'm working on a project at the moment that involves a slider in an info popup. The slide constains info only needed on a touch device. On a desktop it only needs to show the first slide. So what I need to do is stop the slider when on a desktop... I've got pretty close with:
$('body').on({ 'touchstart' : function(){
} });
But as I'm only just starting in jquery I'm 'hacking' it and what I'm doing creates 'unstable' results. I know I need to only process the slider code if being viewed on a touch device - but I have no idea where I should do this...
This is the slider code:
var triggers = $('div.triggers div.trigger');
var images = $('div.slides div.slide');
var lastElem = triggers.length-1;
var mask = $('.mask div.slides');
var imgWidth = images.width();
var target;
triggers.first().addClass('selected');
mask.css('width', imgWidth*(lastElem+1) +'px');
function sliderResponse(target) {
mask.stop(true,false).animate({'left':'-'+ imgWidth*target +'px'},300);
triggers.removeClass('selected').eq(target).addClass('selected');
}
triggers.click(function() {
if ( !$(this).hasClass('selected') ) {
target = $(this).index();
sliderResponse(target);
resetTiming();
}
});
$('.clickSlide.right').click(function() {
target = $('div.triggers div.selected').index();
target === lastElem ? target = 0 : target = target+1;
sliderResponse(target);
resetTiming();
});
$('.clickSlide.left').click(function() {
target = $('div.triggers div.selected').index();
lastElem = triggers.length-1;
target === 0 ? target = lastElem : target = target-1;
sliderResponse(target);
resetTiming();
});
function sliderTiming() {
target = $('div.triggers div.selected').index();
target === lastElem ? target = 0 : target = target+1;
sliderResponse(target);
}
var timingRun = setInterval(function() { sliderTiming(); },5000);
function resetTiming() {
clearInterval(timingRun);
timingRun = setInterval(function() { sliderTiming(); },5000);
}
All help greatly received!!!! Thanks :0)