Как прокрутить к изображению у которого есть класс

263
17 декабря 2017, 09:41

При клике на изображение к его ссылке добавляется класс class="active" как на JQuery прокрутить картинки в блоке id="bx-pager" к ссылке с классом active

#bx-pager { 
	border:1px solid #000; 
	height: 120px; 
	overflow: hidden; 
  width:370px; 
}
<div id="bx-pager"> 
		<a data-slide-index="0" href=""><img src="http://placehold.it/120x120"/></a> 
		<a data-slide-index="1" href=""><img src="http://placehold.it/120x120"/></a> 
		<a data-slide-index="2" href=""><img src="http://placehold.it/120x120"/></a> 
		<a data-slide-index="3" href=""><img src="http://placehold.it/120x120"/></a> 
		<a data-slide-index="4" href=""><img src="http://placehold.it/120x120"/></a> 
		<a data-slide-index="5" href=""><img src="http://placehold.it/120x120"/></a> 
		<a data-slide-index="6" href=""><img src="http://placehold.it/120x120"/></a> 
		<a data-slide-index="7" href=""><img src="http://placehold.it/120x120"/></a> 
	</div>

Answer 1

Так?:

$('a').on('click', function(e){ 
  e.preventDefault(); 
   
  if(!$(this).hasClass('active')){      
    $(this).addClass('active') 
      .siblings() 
      .removeClass('active'); 
  } else { 
    $(this).removeClass('active'); 
  } 
   
   
  $('#bx-pager').animate({ 
     scrollLeft: $(this).offset().left 
  }, 1000); 
   
   
});
#bx-pager { 
	border:1px solid #000; 
	height: 120px; 
    width:360px; 
	overflow-x: scroll; 
	overflow-y: hidden; 
	white-space: nowrap;  /* чтобы картинки стояли в одну линию, не переходя на другую строку */ 
	word-wrap: normal;  /* то же для IE */ 
} 
 
a { 
  display: inline-block; 
  border: 1px solid #ccc; 
} 
 
.active {   
  border: 1px solid red; 
}
<script src="https://code.jquery.com/jquery-2.2.4.js"></script> 
 
   
  <div id="bx-pager"> 
    <a data-slide-index="0" href="" class="active"><img src="http://placehold.it/120x120"/></a> 
    <a data-slide-index="1" href=""><img src="http://placehold.it/120x120"/></a> 
    <a data-slide-index="2" href=""><img src="http://placehold.it/120x120"/></a> 
    <a data-slide-index="3" href=""><img src="http://placehold.it/120x120"/></a> 
  </div>

Вариант 2:

$('a').on('click', function(e){ 
  e.preventDefault(); 
   
  if(!$(this).hasClass('active')){      
    $(this).addClass('active') 
      .siblings() 
      .removeClass('active'); 
  } else { 
    $(this).removeClass('active'); 
  } 
   
   
  $('#bx-pager').animate({ 
     scrollLeft: $(this).offset().left 
  }, 1000); 
   
   
}); 
 
$('#bx-pager').animate({ 
     scrollLeft: $('.active').offset().left 
}, 1000);
#bx-pager { 
	border:1px solid #000; 
	height: 120px; 
    width:360px; 
	overflow-x: scroll; 
	overflow-y: hidden; 
	white-space: nowrap;  /* чтобы картинки стояли в одну линию, не переходя на другую строку */ 
	word-wrap: normal;  /* то же для IE */ 
} 
 
a { 
  display: inline-block; 
  border: 1px solid #ccc; 
} 
 
.active {   
  border: 1px solid red; 
}
<script src="https://code.jquery.com/jquery-2.2.4.js"></script> 
 
   
  <div id="bx-pager"> 
    <a data-slide-index="0" href="" ><img src="http://placehold.it/120x120"/></a> 
    <a data-slide-index="1" href=""><img src="http://placehold.it/120x120"/></a> 
    <a data-slide-index="2" href=""><img src="http://placehold.it/120x120"/></a> 
    <a data-slide-index="3" href="" class="active"><img src="http://placehold.it/120x120"/></a> 
  </div>

READ ALSO
Toggle для соседнего дива в общем

Toggle для соседнего дива в общем

Есть куча блоков с одинаковыми стилями

279
Тест программа на JQuery

Тест программа на JQuery

Создать программу тест на JQuery, каждый отдельный вопрос хранится в виде объектаИнформация которая относится к вопросу имеет следующие характеристики:...

305
Вторая картинка в слайдере влазит в зону видимости первой картинки

Вторая картинка в слайдере влазит в зону видимости первой картинки

Я сделал свой слайдер на jquery, но после загрузки или обновления страницы почему-то вторая картинка в слайдере влазит в зону видимости первой...

279