当用户滚动经过页面的某个部分时 jQuery 触发动作

IT技术 javascript jquery
2021-03-01 22:28:26

大家好,当用户滚动经过页面上的某些位置时,我需要一个 jQuery 动作来触发。这甚至可以用 jQuery 实现吗?我查看了 jQuery API 中的 .scroll,但我认为这不是我需要的。每次用户滚动时它都会触发,但我需要它在用户经过某个区域时触发。

3个回答

使用 jquery 事件 .scroll()

$(window).on('scroll', function() {
    var y_scroll_pos = window.pageYOffset;
    var scroll_pos_test = 150;             // set to whatever you want it to be

    if(y_scroll_pos > scroll_pos_test) {
        //do stuff
    }
});

http://jsfiddle.net/babumxx/hpXL4/

只需在 if 语句内部和外部放置一个警报来测试事件是否正在触发。
2021-05-04 22:28:26
我用 $("header, footer").animate({ backgroundColor: "#fd9c3d" }, 1200); 对其进行了测试。在 if 语句中,它似乎不起作用
2021-05-15 22:28:26

jQuery 中的航点应该这样做:http : //imakewebthings.github.com/jquery-waypoints/

$('#my-el').waypoint(function(direction) {
  console.log('Reached ' + this.element.id + ' from ' + direction + ' direction.');
});

jQuery 航点插件文档:http : //imakewebthings.com/waypoints/guides/jquery-zepto/

刚刚在一个视差单页滚动应用程序上使用了 waypoints.js。效果很好。我可以给你的一个提示是使用航点链接。将可见性设置为隐藏。您可以使用绝对定位来设置航点的高度。<a class="waypoint screen-1-1" style="top:120px">屏幕 1-1</a>。
2021-04-26 22:28:26

为了在单个页面上只触发一次任何操作,我修改了 jondavid 的代码片段如下。

jQuery(document).ready(function($){

    $triggered_times = 0;

    $(window).on('scroll', function() {

            var y_scroll_pos = window.pageYOffset;
            var scroll_pos_test = 150;   // set to whatever you want it to be

            if(y_scroll_pos > scroll_pos_test && $triggered_times == 0 ) {

                //do your stuff over here

                $triggered_times = 1;   // to make sure the above action triggers only once

            }
    });

})


向下滚动到运行代码片段

在这里您可以查看工作代码片段的示例;

jQuery(document).ready(function($){

		$triggered_times = 0;

		$(window).on('scroll', function() {
				var y_scroll_pos = window.pageYOffset;
				var scroll_pos_test = 150;   // set to whatever you want it to be

				if(y_scroll_pos > scroll_pos_test && $triggered_times == 0 ) {
					alert('This alert is triggered after you have scroll down to 150px')
					$triggered_times = 1;   // to make sure the above action triggers only once
				}
		});

	})
p {
    height: 1000px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<p>scroll down this block to get an alert</p>
</body>

实际上有时$不像 WordPress 那样定义,而是jQuery在那里定义。所以这里通过把它放在function($){ ... } 手段$=jQuery. 这就是为什么如果您$从上面的代码中删除符号,它在某些情况下可能会停止工作。
2021-04-24 22:28:26
为什么函数中有$符号document.ready如果我说它有效,否则它不起作用。原因?@Mursaleen
2021-05-17 22:28:26
我现在明白了。谢谢
2021-05-19 22:28:26