我怀疑我可能在这里使用了错误的事件处理程序。有人可以指出我这样做的正确/更好的方法吗?
基本上我正在监视window.resize事件。如果窗口小于屏幕上的元素,我将绑定到scroll事件。我的问题是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);
}
}
答案 0 :(得分:1)
为什么不简单地绑定一次滚动事件,然后当大小低于阈值时,更新变量以启用它?
AKA
$(window).resize(function() { });
$(window).scroll(function()
{
if( /* Check to see if window is greater than some set size */ )
return;
// Do Logic
});
答案 1 :(得分:0)
考虑一下:
$( window ).bind( 'scroll', function () {
if ( $( obj ).height() + topOfSideBar < $( window ).height() ) {
fixIt();
} else {
dynamicallyAdjustIt();
}
});