Javascript 在确定的位置启动固定位置
我有以下Javascript代码:Javascript 在确定的位置启动固定位置,javascript,jquery,Javascript,Jquery,我有以下Javascript代码: var menuPosition = $('.scroll-nav').offset().top; var menuPos = 110; if (menuPosition = menuPos) { $('.scroll-nav').addClass('stick-menu'); $('.fake-nav').removeClass('stick-menu'); } 我的想法是当菜单的位置处于110px时,粘贴。滚动导航。。。但是当我加载页面时,
var menuPosition = $('.scroll-nav').offset().top;
var menuPos = 110;
if (menuPosition = menuPos) {
$('.scroll-nav').addClass('stick-menu');
$('.fake-nav').removeClass('stick-menu');
}
我的想法是当菜单的位置处于110px时,粘贴。滚动导航。。。但是当我加载页面时,代码会自动执行
有什么想法吗
编辑
我的问题的解决办法:
var distance = $('.scroll-nav').offset().top + 200, //+200 BECAUSE JQUERY OFFSET DONT GET MARGINS AND PADDINGS (+200 is an estimative of my total)
$window = $(window);
$window.scroll(function() {
if ( $window.scrollTop() >= distance ) {
$('.scroll-nav').addClass('is-sticky');
$('.fake-nav').removeClass('is-sticky');
}
if ( $window.scrollTop() <= distance ) {
$('.scroll-nav').removeClass('is-sticky');
$('.fake-nav').addClass('is-sticky');
}
});
var distance=$('.scroll nav').offset().top+200,//+200,因为JQUERY offset没有边距和填充(+200是我的总数的估计值)
$window=$(window);
$window.scroll(函数(){
如果($window.scrollTop()>=距离){
$('.scroll nav').addClass('is-sticky');
$('.fake nav').removeClass('is-sticky');
}
如果($window.scrollTop()将其包装到一个函数中,并在scroll上添加事件监听器,当滚动时将触发该监听器。那么如果menuPos正好是110,您想添加一个类吗?您可以使用:
$(document).ready(callback)
您可以编写匿名函数,而不是回调,该函数将在加载页面时执行。您可以在该项上附加函数
您可以编写和创建一个自定义eventListener,以捕获项目的位置更改:
jQuery.fn.onPositionChanged = function (trigger, millis) {
if (millis == null) millis = 100;
var o = $(this[0]); // our jquery object
if (o.length < 1) return o;
var lastPos = null;
var lastOff = null;
setInterval(function () {
if (o == null || o.length < 1) return o; // abort if element is non existend eny more
if (lastPos == null) lastPos = o.position();
if (lastOff == null) lastOff = o.offset();
var newPos = o.position();
var newOff = o.offset();
if (lastPos.top != newPos.top || lastPos.left != newPos.left) {
$(this).trigger('onPositionChanged', { lastPos: lastPos, newPos: newPos });
if (typeof (trigger) == "function") trigger(lastPos, newPos);
lastPos = o.position();
}
if (lastOff.top != newOff.top || lastOff.left != newOff.left) {
$(this).trigger('onOffsetChanged', { lastOff: lastOff, newOff: newOff});
if (typeof (trigger) == "function") trigger(lastOff, newOff);
lastOff= o.offset();
}
}, millis);
return o;
};
*if语句中的条件应为'='
另外,我希望我正确地理解了你的问题。如果我没有理解。请分享更多关于这方面的想法,以便我们能够提供帮助。对不起,我想我已经解释了我的问题,不管怎样,我在互联网上找到了一个解决方案!!
$(document).ready(function() {
$('.scroll-nav').onPositionChanged(someFunctionForExample());
}