jquery - 为什么窗口调整大小不起作用,除了页面加载?
问题描述
当用户在其下方滚动时,我需要让侧边栏元素保持粘性,除非在移动设备上它应该像正常一样滚动。我可以让它在页面加载时工作,但是如果你向下拖动窗口大小,它不会再次触发 resize() 。我希望在窗口大小发生变化时触发它。非常感谢任何帮助。
我的 jQuery:
jQuery(document).ready(function($) {
$(window).resize(function() {
if ($(".jump-to").length) {
if ($(window).width() > 1024) {
var jumpToTop = $(".jump-to").offset().top - 156;
$(window).scroll(function() {
if ($(window).scrollTop() > jumpToTop) {
$(".jump-to").addClass("sticky-jump-to");
}
else {
$(".jump-to").removeClass("sticky-jump-to");
}
});
}
}
});
});
解决方案
您将scroll
-Event 设置为,resize-Event
但您必须单独定义它。我希望我明白了你的想法,所以下面的例子可能会对你有所帮助。
$(document).ready(function() {
// save elements in variables for better performance
var $window = $(window),
$jumpTo = $('#jump-to'),
jumpToLimit = $jumpTo.offset().top - $jumpTo.height();
// add triggers like that - not in each other
$window.on({
resize: onWindowResize,
scroll: onScroll
});
function onWindowResize() {
if ($jumpTo.length) {
if ($window.width() <= 1024) {
$jumpTo.removeClass('sticky-jump-to');
} else if ($window.scrollTop() > jumpToLimit) {
$jumpTo.addClass('sticky-jump-to');
}
jumpToLimit = $jumpTo.offset().top - $jumpTo.height();
}
}
function onScroll() {
if ($jumpTo.length && $window.width() > 1024) {
if ($window.scrollTop() > jumpToLimit) {
$jumpTo.addClass('sticky-jump-to');
return;
}
}
$jumpTo.removeClass('sticky-jump-to');
}
});
.something {
height: 600px;
background: #dd8800;
}
#jump-to {
width: 100%;
height: 25px;
background: #008800;
}
#jump-to.sticky-jump-to {
position: fixed;
top: 0px;
left: 0px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="something"></div>
<div id="jump-to"></div>
<div class="something"></div>
推荐阅读
- python-3.x - 在 win32c.xlPageField 中选择多个字段
- reactjs - react-dnd 在悬停功能中设置状态或道具
- javascript - 访问控制允许凭据错误--nodejs
- python - 如何访问类中的局部变量
- node.js - 是否可以将可变参数传递给过滤器?
- javascript - 我使用 Admob 并收到违反 Android 广告 ID 政策和第 4.8 节的使用规定
- javascript - 如何通过 Google 幻灯片上的链接/按钮调用函数?
- docker - 如何找出我已登录的注册表?
- reactjs - 如何调度多个动作
- javascript - Firefox 开发者工具:JavaScript 文件显示为 HTML