Как менять содержимое блока при прокрутке?

Добрый день!
Есть такая разметка:
<div class="wrapper">
   <div class="menu"> 
   </div>
   <div class="content">
      <div class="element name"> тут текст, который нужно выводить в другом блоке </div>
      <div class="element"> </div>
       <div class="element"> </div>

      <div class="element name"> тут текст, который нужно выводить в другом блоке  </div>
      <div class="element"> </div>

      ... и т.д. (кол-во элементов меняется)
   </div>
</div>

<div class="result"> </div>


хочется, чтоб при скролле страницы выполнялось следующее условие:
Прокручиваем страницу,
Как только попался элемент div class="element name" при .scrollTop() > 101,
выводится его содержимое в отдельный элемент div class="result".
Следующий попавшийся при прокрутке .scrollTop() > 101
элемент div class="element name" меняет содержимое предыдущего в div class="result". то есть перезаписывает содержание.

Пока сделала вот это,
но выводятся сразу все значения элементов element name одновременно:
$(document).scroll(function(){
   if ($(this).scrollTop() > 101) {
      $(".result").text($('.name').text());
   } else {
      $(".result").text('');
   }
}


Как можно доработать это?
Заранее спасибо за ответ.
  • Вопрос задан
  • 911 просмотров
Решения вопроса 1
rockfeeler
@rockfeeler
Фронтендер, дизайнер, верстальщик-перфекционист
Ну как-то так, например..

$(window).on('scroll', function() {
	var winScroll = $(window).scrollTop(),
		topMargin = 101,
		$resultBlock = $('.result');

	$('.element.name').each(function() {
		var $elemName = $(this),
			elemOffset = $elemName.offset().top,
			elemText = $elemName.html();

		if(elemOffset > winScroll + topMargin) {
			$resultBlock.html(elemText);
		}
	});
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы