Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Работа с объектом при прокрутке экрана (scroll) (https://javascript.ru/forum/jquery/26707-rabota-s-obektom-pri-prokrutke-ehkrana-scroll.html)

alexpop 19.03.2012 03:15

Работа с объектом при прокрутке экрана (scroll)
 
Здравствуйте, не могу понять, как концептуально решается следующая задача:
У меня есть несколько блоков, внутри каждого есть SPAN с заголовком этого блока. Также, есть пустой UL, в который необходимо копировать эти заголовки при прокрутке страницы. Причем, только один раз на каждый заголовок.
А именно: при скролле страницы, как только верхняя граница блока достигает верха окна - заголовок должен скопироваться. Затем следующий блок, и так до конца. В итог должен получиться список из всех заголовков блоков.

В чем проблема
Я не могу понять, как сделать, чтобы обрабатывался только тот блок, который пересек верхнюю границу окна, а остальные пока не включались.
Сейчас, при пересечении верха – все заголовки добавляются, причем бесконечно.

HTML
Код:

<div class="item">
    <span>#1 container Title</span>
</div>
<div class="item">
    <span>#2 container Title</span>
</div>
<div class="item">
    <span>#3 container Title</span>
</div>
<div class="item">
    <span>#4 container Title</span>
</div>
 
<ul class="list">
</ul>​

Что есть
$(window).scroll(function() {

    var vItem = $('.item'),
        vScroll = $(this).scrollTop(),
        vPos = vItem.offset();

    if (vScroll > vPos) {
        $('.item').find('span').clone().appendTo('.list');
        $('.list span').wrap('<li></li>');
    }

});


http://jsfiddle.net/alexpop/QkMDR/39/

Pavel M. 19.03.2012 11:13

можно так http://jsfiddle.net/QkMDR/40/

alexpop 19.03.2012 12:39

Круто! Все работает. Спасибо огромное! Не хватает мне системности знаний пока.

Единственный вопрос, что имеет ввиду Komodo, когда выводит предупреждение от том, что анонимная функция не всегда возвращает значение? Неименованная функция. Как это залечить?
Убрал return - все стало норм. Без return'a тот-же эффект

ArslanovDR 19.12.2013 13:07

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

есть div
необходимо при скроллинге стриницы на 200 пикс вниз этот див сделать высотой 0 пикс, а при возврате на самый верх страницы вновь сделать высоту дива в 200 пикс.

Подскажите?


Часовой пояс GMT +3, время: 07:37.