Страницы

Поиск по вопросам

вторник, 26 февраля 2019 г.

Как сократить запись на JS - привести в нормальный вид (присвоение порядковых номеров)

Подскажите, пожалуйста, способ привести код jquery в нормальный вид:
$('.go0').click(function(){ carousel.trigger('owl.goTo', 0) });
$('.go1').click(function(){ carousel.trigger('owl.goTo', 1) });
$('.go2').click(function(){ carousel.trigger('owl.goTo', 2) });
$('.go3').click(function(){ carousel.trigger('owl.goTo', 3) });
$('.go4').click(function(){ carousel.trigger('owl.goTo', 4) });
$('.go5').click(function(){ carousel.trigger('owl.goTo', 5) });
$('.go6').click(function(){ carousel.trigger('owl.goTo', 6) });
$('.go7').click(function(){ carousel.trigger('owl.goTo', 7) });
$('.go8').click(function(){ carousel.trigger('owl.goTo', 8) });
Элементов (.go0, .go1 и т.д.) может быть бесконечно много, и писать их в таком виде не нормально.
К сожалению, не нашел как записать это в виде с n+1 или типа того.


Ответ

Решение "не включая мозг":
for (var ix = 0; ix < 9; ix += 1) { $('.go' + ix).click(function (ix) { return function() { carousel.trigger('owl.goTo', ix); }; }(ix)); }
Теперь нормальное решение:
Обычно у элементов переключения карусели общий предок и сами элементы идут в нем подряд. Поэтому достаточно найти номер потомка у предка, что в jQuery тривиальная задача. Предположим что у всех переключателей установлен класс go
$('.go').click(function() { carousel.trigger('owl.goTo', $(this).index()); });
Если элементы .go находятся еще каждый в своей обертке, то вместо $(this) нужно будет указать предка, положение которого в пределах своего предка может дать номер слайда.

Комментариев нет:

Отправить комментарий