我试图将我网站上的第二个菜单粘贴到顶部菜单,并且我在两个引导列(第 8 列和第 4 列)中有几个菜单。因此,虽然我在函数之外使用了 jQuery 选择器,但它运行良好。但是当我决定重构我的代码并创建一个将类作为参数的函数时,它实际上停止了正常工作。 元素 $element 只是一个类为“.navbar.navbar-default.stick-left”的 div 元素。
这里是代码:
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] 在 proto 对象内部具有单元化的“top”字段且长度为 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');
但它们不能同时工作。两个菜单中只有一个可以通过这种方式固定在顶部。 如何更正我的解决方案以便将两个菜单粘贴到顶部菜单?
关于javascript - 在函数中,jQuery 选择器返回 PreviousObject 而不是所选对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26544883/