我正在尝试将我网站上的第二个菜单粘贴到顶层菜单中,我在两个引导列(col-8和col-4)中有几个菜单。所以,虽然我在函数中使用了jQuery选择器,但它运行良好。但是当我决定重构我的代码并创建一个将类作为参数的函数时,它实际上停止了正常工作。 Element $ element只是一个div元素,类为“.navbar.navbar-default.stick-left”。
这里是代码:
var stickelement = function(classid) {
$element = $(classid);
console.log($element);
if ($element.length) {
elementOffset = $element.offset().top;
$(window).scroll(function (e) {
scrollTop = $(window).scrollTop() + $('.navbar.navbar-default.navbar-fixed-top').height();
distance = elementOffset - scrollTop;
if (distance < 0 && $element.css('position') != 'fixed') {
$element.css({
'position': 'fixed',
'margin': '0px',
'top': ($('.navbar.navbar-default.navbar-fixed-top').height()).toString() + 'px'
});
}
if (distance > 0 && $element.css('position') == 'fixed') {
$element.css({'position': 'static', 'margin': '50px'});
}
});
}
};
stickelement(".navbar.navbar-default.stick-left");
重新加载页面后,我在我的控制台中只看到了n.fn.init [0],其中原型对象内部有一个“top”字段,长度为0。
我在哪里弄错了?
答案 0 :(得分:0)
所以,我解决了我的问题,但第二个问题已经出现了。我试图使用两个调用$(window).scroll异步调用:
var stickelement = function(classid) {
$element = $(classid);
console.log($element);
if ($element.length) {
elementOffset = $element.offset().top;
$(window).scroll(function (e) {
scrollTop = $(window).scrollTop() + $('.navbar.navbar-default.navbar-fixed-top').height();
distance = elementOffset - scrollTop;
if (distance < 0 && $element.css('position') != 'fixed') {
$element.css({
'position': 'fixed',
'margin': '0px',
'top': ($('.navbar.navbar-default.navbar-fixed-top').height()).toString() + 'px'
});
}
if (distance > 0 && $element.css('position') == 'fixed') {
$element.css({'position': 'static', 'margin': '50px'});
}
});
}
};
stickelement('.stick-left');
stickelement('.stick-right');
但他们并不同时工作。只有两个菜单中的一个可以通过这种方式粘在顶部。 如何纠正我的解决方案,以便将两个菜单粘贴到顶部菜单?