Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在确定的位置启动固定位置_Javascript_Jquery - Fatal编程技术网

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时,粘贴。滚动导航。。。但是当我加载页面时,

我有以下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 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());
}