【问题标题】:Prevent navigation to the top of the page after click on fixed top menu [duplicate]单击固定顶部菜单后阻止导航到页面顶部[重复]
【发布时间】:2016-02-25 16:15:08
【问题描述】:

我最近一直在做一个新项目,并使用了固定顶部菜单。 在顶部导航菜单中,我有未编号的内联列表。 我有一个可点击的元素,在 click() 之后它显示了 div 内的垂直选项。

我不确定这只是我做的 css 错误还是我需要添加一些东西才能使这项工作正常进行,但是每次我单击此 <li> 元素时,它都会将我导航到页面顶部,然后显示div 的内容。

它至少可以工作,但我希望用户对网站上的功能感到满意,所以我不希望 click() 功能将我导航到页面顶部,而只是显示固定的 @987654322 @来自与我的固定导航栏对齐的导航栏。感谢您的帮助。

**编辑:**我忘了说,在 <div> show() 函数之后,我可以轻松地移动网站上显示的 div 并且它固定在它应该在的位置,但是当我再次点击它时要折叠它,click() 函数会将我导航到顶部。

代码如下:

HTML:

<li class="navbar_item navbar_item_left navbar_item_actions" onclick=">
                <a class="navbar_item_link navbar_item_link_for_actions refresher" href="#">Click me!</a>
                <div class="actions-dropdown">
                    <a href="#">First link</a>
                    <a href="#">Second link</a>
                    <a href="#">Third link</a>
                </div>
</li>

CSS:

.actions-dropdown {display: none; position: fixed; background-color: rgba(154, 210, 78, 1); width: 250px;}
.actions-dropdown a {color: rgb(250, 250, 250); padding: 8px; font-size: 15px; text-decoration: none; display: block; text-align: left; float: left; width: 234px;}

JS:

$(document).ready(function(){
   $(".navbar_item_actions").click(function(){
        var display = $(".actions-dropdown").css('display');
        if(display == 'none'){
            $(".actions-dropdown").show(400);
        } else {
            $(".actions-dropdown").hide(400);
        }
   });
});

【问题讨论】:

    标签: javascript jquery html css fixed


    【解决方案1】:

    取消单击,这样默认操作(按照链接)将不会执行。

    $(".navbar_item_actions").click(function(e){
        e.preventDefault();
        /* rest of code */
    });
    

    【讨论】:

    • 现在我意识到我忘了添加那个。我想知道怎么了。感谢您的帮助!
    【解决方案2】:

    在事件上使用 preventDefault。

    $(".navbar_item_actions").click(function(event){
        var display = $(".actions-dropdown").css('display');
        if(display == 'none'){
            $(".actions-dropdown").show(400);
        } else {
            $(".actions-dropdown").hide(400);
        }
        event.preventDefault();
    });
    

    【讨论】:

    • 感谢您的帮助,克里斯。我刚刚意识到我忘了添加preventDefault()。否则谢谢。
    • 我认为最好的做法是放置 event.preventDefault();函数打开后的第一个位置,就像@epascarello 所做的那样。
    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2020-03-05
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多