Javascript对象固定滚动

标签 javascript jquery css scroll fixed

我有一个奇怪的错误。我在顶部有一个通过 CSS 固定的栏。简单的。然而,在这个栏中打开一个 jQuery 下拉菜单是错误的,因为它不滚动,当我这样做时。下拉菜单停留在当前位置。

所以,我尝试用 jQuery 解决这个问题:

$(document).ready(function () {
    var dropdownMenu = $('.dropdownMenu'),
        top = $('#topMenu').height();

    $(window).on('scroll click', function () {
        $(dropdownMenu).css('position', 'fixed');
        $(dropdownMenu).css('top', top + 7 + 'px');
    });
});

如果我打开页面最顶部的下拉菜单并滚动,它会按预期工作。但是当向下滚动并打开下拉菜单时,它无处不在,但不是我期望的位置。只要我滚动,它就会固定它的位置。

所以我的问题是,点击时,它会在错误的位置打开。不多也不少。

有什么想法吗?

最佳答案

一个快速而肮脏的 hack:

$(function() {
    WCF.Dropdown.init();

$('.dropdownToggle').click(reposition);

$(window).on('scroll click', reposition);
});

function reposition() {
    var dropdownMenu = $('.dropdownMenu'),
        top = $('#topMenu').height();
    setTimeout(function() {
        $(dropdownMenu).css('position', 'fixed');
        $(dropdownMenu).css('top', top + 7 + 'px');
    }, 10);
}

关于Javascript对象固定滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20863308/

相关文章:

javascript - morris.js 的对数 y 轴

javascript - Webpack:Bundle.js - 未捕获类型错误:(中间值).setTimeout 不是函数

javascript - 添加其上方的类,例如将类 "act"添加到 "<ul>"上方的 "li.item1"

javascript - 如何提交由jQuery生成的HTML多个表单

html - 在一行中向左浮动两个 flex 元素,向右浮动一个元素

javascript - Struts2 jsp页面在新窗口中打开而不是内容div

javascript - 动态删除 DOM 表中的行

javascript - Bootstrap + 2个版本的jquery

css - Scss - 禁用点击边框

css - 自定义 Google 文档查看器的 CSS