所以,就像标题所说的那样,我在设法将变量currentOffset
与我的数组offsets
进行比较时遇到了麻烦。所以,假设我在$(window).scroll();
事件中有currentOffset,就像这样......
var currentOffset = 0;
var sections = $('section').get();
var offsets = [];
var i = 0;
sections.forEach(function () {
offsets.push($(sections[i]).offset().top);
i++;
});
$(window).scroll(function () {
currentOffset = $(window).scrollTop();
});
我如何 经常 检查currentOffset
是否> =我的数组中的偏移之一。所以我们假设该数组包含以下数据......
[8, 332, 656]
当用户滚动,且currentOffset
为8
或大于8
时,则触发事件。然后当用户点击332
时,或滚动到比332
更深的深度,然后触发另一个事件。
这可能吗?
答案 0 :(得分:1)
尝试像这样重写循环:
var offsets = [];
$.each($('section'),function (i,v) {
offsets.push($(v).offset().top)
});
然后在scroll事件中使用:
var prevScroll = offsets[0]!=null ? offsets[0] : 0;
var toTrigger = 0;
$.each(offsets,function(i,v){
if(i>0 && currentOffset >= prevScroll && currentOffset < v){
toTrigger = i;
return true;
}
prevScroll = v;
});
switch(toTrigger){
case 1:
function1();
break;
case 2:
function2();
break;
case 3:
function3();
break;
}
答案 1 :(得分:1)
在滚动回调中,您可以遍历每个数组值并进行测试。如果你找到一个就打破。这假设数组也在递增顺序。
var offset, nextOffset, length = offsets.length;
for (var index = 0; index < length; index++) {
offset = offsets[index];
nextOffset = offsets[index + 1];
if (index == length - 1 && currentOffset >= offset) {
// if last index don't bother checking next value, trigger event
}
else if (currentOffset >= offset && nextOffset && currentOffset < nextOffset) {
// trigger event
break;
}
}
答案 2 :(得分:1)
这是一个小提琴:
jsfiddle.net/LsLaeakj/1
typedef struct OMX_COMPONENTTYPE {
OMX_VERSIONTYPE nVersion;
OMX_ERRORTYPE (*SetParameter)(
OMX_HANDLETYPE hComponent,
OMX_INDEXTYPE nIndex,
OMX_PTR pComponentParameterStructure);
...
它将最后一个偏移div设置为红色背景,并将其记录到控制台。显然这可以改变,但希望它能说明你所追求的功能。