複数のスライダーがあるページがあります(http://www.switchonthecode.com/tutorials/using-jquery-slider-to-scroll-a-divから)。それぞれが異なるdivであるため、コードを複製してこのコードをもたらす一意のクラスに変更しました。
$(document).ready(function(){
$(".slider1").slider({
animate: true,
handle: ".handle1",
change: handleSliderChange1,
slide: handleSliderSlide1
});
$(".slider2").slider({
animate: true,
handle: ".handle2",
change: handleSliderChange2,
slide: handleSliderSlide2
});
$(".slider3").slider({
animate: true,
handle: ".handle3",
change: handleSliderChange3,
slide: handleSliderSlide3
});
});
function handleSliderChange1(e, ui)
{
var maxScroll = $(".gal1").attr("scrollWidth") - $(".gal1").width();
$(".gal1").animate({scrollLeft: ui.value * (maxScroll / 100) }, 1000);
}
function handleSliderSlide1(e, ui)
{
var maxScroll = $(".gal1").attr("scrollWidth") - $(".gal1").width();
$(".gal1").attr({scrollLeft: ui.value * (maxScroll / 100) });
}
function handleSliderChange2(e, ui)
{
var maxScroll = $(".gal2").attr("scrollWidth") - $(".gal2").width();
$(".gal2").animate({scrollLeft: ui.value * (maxScroll / 100) }, 1000);
}
function handleSliderSlide2(e, ui)
{
var maxScroll = $(".gal2").attr("scrollWidth") - $(".gal2").width();
$(".gal2").attr({scrollLeft: ui.value * (maxScroll / 100) });
}
function handleSliderChange3(e, ui)
{
var maxScroll = $(".gal3").attr("scrollWidth") - $(".gal3").width();
$(".gal3").animate({scrollLeft: ui.value * (maxScroll / 100) }, 1000);
}
function handleSliderSlide3(e, ui)
{
var maxScroll = $(".gal3").attr("scrollWidth") - $(".gal3").width();
$(".gal3").attr({scrollLeft: ui.value * (maxScroll / 100) });
}
これも問題なく動作しますが、私はこれらのスライドを約 7 つ持っており (上に表示されているのは 3 つだけです)、基本的に同じコードを繰り返すのはちょっと気分が悪いです...
このコードを単純化する方法はありますか?