我正在尝试获取动态值,即scrollTop()和text() - 将它们存储在一个数组中,然后在滚动事件中使用它们。到目前为止我有这个,这似乎只是推动第一个价值。我确定还有一些其他超级有效的方法,使用更少的代码,但我很新,我只是想了解它为什么不工作。任何帮助将非常感激!萨米。
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]);
}
});
答案 0 :(得分:1)
将.section-title
更改为类,因为ID是唯一的,对数组使用$.map
,并且每个都要迭代并执行if条件:
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]);
});
});