2013-03-27 3 views
0

Я пытаюсь получить динамические значения, т.е. scrollTop() и и text() - сохранить их в массиве, а затем использовать их позже в событии прокрутки. Пока у меня есть это, что только, кажется, подталкивает первое значение. Я уверен, что есть и другой суперэффективный способ сделать это, используя намного меньше кода, но я довольно новичок в этом, и я просто пытаюсь понять, почему он не работает. любая помощь была бы чрезвычайно оценена! Сами.Динамически получить значение ie scrollTop() и сохранить в массиве

var $titleName = []; 
var $titlePosition = []; 

$('#section-title').each(function() { 
    $titleName.push($(this).text()); 
}); 

$('#section-title').each(function() { 
    $titlePosition.push($(this).offset()); 
}); 

$(window).scroll(function() { 
    windowScroll = $(this).scrollTop(); 

    if (windowScroll >= $titlePosition[0].top) { 
     $tooltip.text($titleName[0]); 
    } 

    if (windowScroll >= $titlePosition[1].top - 100) { 
     $tooltip.text($titleName[1]); 
    } 

    if (windowScroll >= $titlePosition[2].top - 100) { 
     $tooltip.text($titleName[2]); 
    } 

    if (windowScroll >= $titlePosition[3].top - 100) { 
     $tooltip.text($titleName[3]); 
    } 
}); 

http://jsfiddle.net/userdude/sTNJM/

+1

'$ ('# Раздел -title '). each ... 'Если есть несколько элементов id-section section-title, вам нужно переключить их на классы' .section-title'. Допускается только один 'id'. Возможно, это объяснит, почему меняется только один элемент. –

ответ

1

Изменение .section-title в класс, как идентификаторы уникальны, использовать $.map для массивов, и каждый итерировать и делать, если условия:

var elem   = $('.section-title'), 
    $titleName  = $.map(elem, function(el,i) { return $(el).text(); }), 
    $titlePosition = $.map(elem, function(el,i) { return $(el).offset().top; }); 

$(window).on('scroll',function() { 
    var windowScroll = $(this).scrollTop(); 

    $.each($titlePosition, function(i, pos) { 
     var pad = i>0 ? 100 : 0; 
     if (windowScroll >= (pos - pad)) $tooltip.text($titleName[i]); 
    }); 
}); 
+0

Откуда появляется '$ tooltip'? И у вас есть паразитный ',' в конце списка переменных. –

+0

@JaredFarrish - как я должен знать, откуда появилась '$ tooltip'? Исправлена ​​запятая, спасибо! – adeneo

+0

Я понял, что это была какая-то настройка scrollspy, поэтому я предположил, что '$ tooltip' был заголовком: http://jsfiddle.net/userdude/pejK5/1/ Также в' $ titlePosition' '$ .map() ',' this' должен быть 'el'. –

Смежные вопросы