Выделение ссылок при использовании навигационных стрелок

#javascript #jquery #css #sliding

#javascript #jquery #css #скольжение

Вопрос:

У меня есть вопрос, похожий на другие здесь, но они не помогли, потому что они ссылались на ссылки на списки, в то время как они не являются списками.

У меня есть сайт с горизонтальным перемещением. Когда вы нажимаете на ссылки вверху, они выделяются в соответствии с тем, на какую страницу они переходят. Однако, если вы используете левую и правую навигационные стрелки, ссылки не выделяются должным образом. Он просто остается выделенным на последней ссылке, на которую был нажат. Мне было интересно, может ли кто-нибудь показать мне, что я делаю неправильно. Я хочу, чтобы правильная ссылка была выделена, даже когда используются навигационные стрелки.

Вот скрипт на jsfiddle:http://jsfiddle.net/LD9YS/13 /

И вот одна из моих неудачных попыток… (пожалуйста, не пытайтесь выяснить, что я здесь делал… Я сам об этом понятия не имею)

 $(".arrow-right").click(function(){
   prevA.removeClass("active");
   prevA = $(A[index]).addClass("active");
});
  

До боли очевидно, что я понятия не имею, как это сделать, но, по крайней мере, я предпринял несколько попыток. Я хотел показать больше своих попыток, но они были настолько запутанными, что я даже не могу вспомнить, что я сделал с ними.

Может кто-нибудь, пожалуйста, помочь? Если кто-то не может помочь с этим, я готов просто отказаться от этого.

Ответ №1:

Вы бы сделали это следующим образом

 $('.arrow-left').on('click', function (e) {
    e.preventDefault();
    $('.tabs .active').prev().trigger('mousedown');
});

$('.arrow-right').on('click', function (e) {
    e.preventDefault();
    $('.tabs .active').next().trigger('mousedown');
});
  

СКРИПКА

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

1. Работает отлично, но есть одна небольшая проблема. Когда вы переходите к последней ссылке (страница 5), и вы продолжаете нажимать на нее, выделение продолжает повторяться, но страница остается на странице 5. Чтобы уточнить, я установил его так, чтобы страницы не возвращались к первой странице. Я хочу, чтобы это остановилось на 5.

2. Ты молодец! Настоящий профессионал, если я когда-либо видел такого. Большое спасибо! Работает как шарм.

3. @user2284703 — Я на самом деле изменил это, это кажется намного проще!

4. Вы также можете легко объединить два обработчика следующим образом -> jsfiddle.net/LD9YS/18

Ответ №2:

Вот что вам следует сделать:

   $('.arrow-left').on('click', function(e){
    e.preventDefault();
    mySwiper.swipePrev();
    $(".tabs .active").removeClass('active');
    $($('.tabs a')[mySwiper.activeIndex]).addClass('active');
  })

  $('.arrow-right').on('click', function(e){
    e.preventDefault();
    mySwiper.swipeNext();
    $(".tabs .active").removeClass('active');
    $($('.tabs a')[mySwiper.activeIndex]).addClass('active');
  })
  

Ответ №3:

Это сработало бы для стрелки вправо…

   $('.arrow-left').on('click', function(e){
    e.preventDefault()
    var current = $('.tabs').find('a.active').index();
      if(current!= $('.tabs').find('a:first').index()){
         $('.tabs a').removeClass('active');
          $('.tabs a').eq(current-1).addClass('active');
      }
    mySwiper.swipePrev()
  })
  

То же самое для стрелки влево

 $('.arrow-right').on('click', function(e){
    e.preventDefault()
    var current = $('.tabs').find('a.active').index();
      if(current!= $('.tabs').find('a:last').index()){
         $('.tabs a').removeClass('active');
          $('.tabs a').eq(current 1).addClass('active');
      }
mySwiper.swipeNext()
})
  

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

1. Этот код просто испортил все мои страницы при его использовании. У меня есть каждый раздел (страница), отображающий iframe, но этот код просто превратил все это в маленькие iframe рядом друг с другом, все подряд на одной странице. Хотя спасибо. Ценю время, потраченное на помощь.

2. @user2284703 Возможно, я забыл включить ) в конце блока. Теперь я отредактировал это, но я рад, что вы нашли свой ответ.