我怀疑我可能在这里使用事件处理程序错误。有人可以请我指出一个正确的/更好的做法吗?我添加了一堆不必要的事件处理程序吗?
基本上我正在监视window.resize事件。如果窗口小于屏幕上的元素,我将绑定到滚动事件。我的问题是resize事件不断抛出。我认为这意味着我一直在重新认识滚动事件。这看起来很糟糕。思考一个更好的方法来做到这一点?
我可以使用一个变量来跟踪它是否已经绑定......但对我来说似乎笨重。
//when window is resized check whether the sidebar still fits on screen
$(window).resize(checkIt);
function checkIt() {
botOfSidebar = $(obj).height() + topOfSidebar;
if (botOfSidebar < $(window).height()) {
//discard event handler
$(window).unbind("scroll", dynamicallyAdjustIt);
fixIt(); //fix it in place
}
else {
console.log("dynamically adjust it");
$(window).scroll(dynamicallyAdjustIt);
}
}
对不起,我刚开始到今天这个。当我知道我只需要在窗口调整大小时执行操作时,对每个滚动事件进行检查就显得很浪费。这将在我公司的网站上实现,所以我宁愿在第一时间发布它。 – mrtsherman