如何使用 jquery 隐藏用于签名页面的导航栏,以便共享布局仍显示在其他文档上?

Posted

技术标签:

【中文标题】如何使用 jquery 隐藏用于签名页面的导航栏,以便共享布局仍显示在其他文档上?【英文标题】:How to hide nav bar for signing page using jquery so that shared layout still shows on other documents? 【发布时间】:2019-08-19 12:27:10 【问题描述】:

我有一个粗略的想法,通过使用 jquery 我可以隐藏某些 html div。所有页面的导航栏都有一个共享布局,但我不希望它仅在他们按下提交后才显示在初始登录页面中,并且它在导航栏显示时有效

我尝试在我的登录页面中调用文档,然后在具有该类的对象上调用 hide。

这是我的 NavBar 定义,它刚刚随项目提供

   <nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">HomeRepair</a>
        </div>
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
                <li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>
                <li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>
            </ul>
        </div>
    </div>
</nav>

我在登录视图底部添加了这个脚本标签

   <script> $(document).ready(function ()  $("navbar navbar-inverse navbar-fixed-top").hide() );
</script> 

一旦我重建了项目,导航栏就没有隐藏

【问题讨论】:

而不是 $(document).ready(function () $("navbar navbar-inverse navbar-fixed-top").hide() 就像 $(document).ready(function () $(".navbar").hide() 那样做 How can I select an element with multiple classes in jQuery?的可能重复 【参考方案1】:

你可以像下面那样做

<script> $(document).ready(function ()  $(".navbar").hide() );

<script> $(document).ready(function ()  $(".navbar-fixed-top").hide() );

或者

不要在登录页面中包含navbar 代码,如果您正在处理多个页面,例如用于登录和其他欢迎的页面

类由. 表示,ID 由# 表示,用作jquery 中的选择器

【讨论】:

嘿,谢谢你的回复,是的,我对 jquery 不好,我只是在几个小时前才开始了解它。我想知道我找到的解决方案是否更好,因为它在技术上不会构建 narbar,除非它不在页面上的登录上,否则会显示【参考方案2】:

有两种方式:

    使用您现有的 css 类“导航栏”

    <script>
        $(document).ready(function () 
            $(".navbar").hide();
        );
    </script>
    

    为您的导航栏添加一个 id:

    &lt;nav id="navBar" class="navbar navbar-inverse navbar-fixed-top"&gt;

并按如下方式更改您的 js 代码:

    <script>
        $(document).ready(function () 
            $("#navBar").hide();
        );
    </script>

jQuery #id 选择器使用 HTML 标记的 id 属性来查找特定元素,.class 选择器使用特定类查找元素。

您可以在此处找到有关 JQuery 选择器的更多信息:W3School: jQuery Selectors

【讨论】:

或者更好,learn about selectors from jQuery itself,如果您不喜欢广告。 @HereticMonkey 谢谢,显示 jquery 你必须通过 id 而不是类来选择? p.s 你有没有看到新的 blazor 东西我等不及了,我也找到了一个不同的解决方案,它不会将导航栏暴露给登录页面 @Darman 不,您不必按 id 而不是 class 选择。不知道你是如何从我的评论中得到的。 @HereticMonkey 度过了漫长的一天,我想我的意思是使用类或 id 哪个更好?就像我知道列表和字典一样,字典的查找速度更快,使用一个比另一个有一些优势 听起来像是一个新问题,虽然之前有人问过这个问题:What's the difference between an id and a class?, Which method is better? CSS classes or ID's?【参考方案3】:

您好,谢谢您的回答,我设法以不同的方式实现它,因为我只想为除登录名(主页)之外的所有其他页面显示它,所以我将整个导航栏包装在 if 语句中并以是否不是首页则显示栏

  @if (ViewContext.RouteData.Values["controller"].ToString() != "Home")

但我想知道这个或 jquery 选择器方法是否更好

【讨论】:

以上是关于如何使用 jquery 隐藏用于签名页面的导航栏,以便共享布局仍显示在其他文档上?的主要内容,如果未能解决你的问题,请参考以下文章

如何在xamarin表单ios中隐藏标签栏导航标题

两个JS,网页导航栏和图片切换冲突,导航栏用Jquery 是否因为函数名$ 冲突 怎么改?

如何在 URL 更改时隐藏导航栏项目?

将类从 navbar-light 更改为 navbar-dark 隐藏导航栏

微信h5滑动隐藏底部导航栏

滚动上带有隐藏导航栏的页面菜单