Javascript 检测div滚动到的时间不起作用
我无法检测页面的某个部分何时向下滚动到。一旦我开始使用某个ID或类,我想运行几个函数 我在下面找到并尝试了此操作,但代码未激活:Javascript 检测div滚动到的时间不起作用,javascript,jquery,Javascript,Jquery,我无法检测页面的某个部分何时向下滚动到。一旦我开始使用某个ID或类,我想运行几个函数 我在下面找到并尝试了此操作,但代码未激活: // Once you scroll into that div ID, this still does not get hit: $( "#slice_video" ).scroll(function() { console.log('in scroll...'); }); // In the comments I also saw this s
// Once you scroll into that div ID, this still does not get hit:
$( "#slice_video" ).scroll(function() {
console.log('in scroll...');
});
// In the comments I also saw this solution, tried it but still nothing working:
function isScrolledIntoView(elem) {
// alert("method invoked");
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom) && (elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
if (isScrolledIntoView($('.eco_jumbotron'))){
// initialize modals:
modals.wireModals($());
// Animate in Tiles
animateTiles();
}
//一旦您滚动到该div ID,它仍然不会被点击:
$(“#切片视频”)。滚动(函数(){
log('in scroll…');
});
//在评论中,我也看到了这个解决方案,尝试过,但仍然没有任何效果:
函数IsCrolledinToView(elem){
//警报(“调用的方法”);
var docViewTop=$(window.scrollTop();
var docViewBottom=docViewTop+$(window).height();
var elemTop=$(elem).offset().top;
var elemBottom=elemTop+$(elem).height();
return((elemBottom>=docViewTop)&&(elemTop您必须在溢出的容器上侦听滚动或自动滚动事件
该代码确实有效:
$('.container' ).scroll(function() {
if($(".box4").position().top < $(".container").position().top + $(".container").height()){
// code
}
});
$('.container')。滚动(函数(){
如果($(“.box4”).position().top<$(.container”).position().top+$(.container”).height()){
//代码
}
});
我想你可以做得更好,但这只是一个开始
我希望有帮助
编辑:
不要忘记处理这样一个事实:使用此方法,每次滚动一点点,事件就会触发,并且div的位置小于容器(底边)定位因此,您的问题是您首先尝试在错误的分区上滚动。然后您正在检查整个窗口到该分区的高度。因此,如果您将其更改为.container
滚动事件,则每次滚动时都会发出警报。您要做的是检查相对于正在滚动的分区的滚动。例如这个
function isScrolledIntoView( elem, container )
{
var contTop = $(container).offset().top;
var contBottom = contTop + $(container).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom <= contBottom) && (elemTop >= contTop));
}
$( '.container' ).scroll(function() {
if ( isScrolledIntoView( $( '.box4' ) , $( '.container' ) ) )
{
console.log('HERE!');
}
});
函数是crolledintoview(元素、容器)
{
var contTop=$(容器).offset().top;
var contBottom=contTop+$(容器).height();
var elemTop=$(elem).offset().top;
var elemBottom=elemTop+$(elem).height();
返回((elemBottom=contTop));
}
$('.container')。滚动(函数(){
if(isScrolledIntoView($('.box4'),$('.container'))
{
console.log('HERE!');
}
});
为什么计数会在第2部分下到一半时激活?这是一个dom框区域问题吗?当第4部分的上边缘到达容器的下边缘时(当它开始可见时)计数会激活。但是,通过更改div中的表达式,您可以很容易地将其更改为仅在完全可见时才激活它;)