Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Jquery加载导航栏时设置活动类_Javascript_Html_Css - Fatal编程技术网

Javascript 通过Jquery加载导航栏时设置活动类

Javascript 通过Jquery加载导航栏时设置活动类,javascript,html,css,Javascript,Html,Css,我试图使用jquery在将导航菜单的活动类作为单独的html文件加载时初始化它 我不熟悉PHP,而且我对网站的生成还很陌生,所以我对JS以及常用语言(HTML、CSS和JS)之间的集成不太熟悉。我已经搜索了整个堆栈溢出,并尝试了几种解决方案,但我显然遗漏了一些东西: 我认为我的问题与等待页面加载有关。我实现了一个可以工作的“点击”功能,但是当我在菜单中实际加载一个页面时,它会在中将类设置为活动 编辑:为了澄清,我成功地通过单击事件设置了活动类,背景将变为蓝色。但是,当菜单链接实际激活

我试图使用jquery在将导航菜单的活动类作为单独的html文件加载时初始化它

我不熟悉PHP,而且我对网站的生成还很陌生,所以我对JS以及常用语言(HTML、CSS和JS)之间的集成不太熟悉。我已经搜索了整个堆栈溢出,并尝试了几种解决方案,但我显然遗漏了一些东西:

我认为我的问题与等待页面加载有关。我实现了一个可以工作的“点击”功能,但是当我在菜单中实际加载一个页面时,它会在
  • 中将类设置为活动

    编辑:为了澄清,我成功地通过单击事件设置了活动类,背景将变为蓝色。但是,当菜单链接实际激活时,背景闪烁蓝色,然后重新加载为黑色。我试图弄清楚如何在通过Jquery调用导航菜单时设置活动类。为了证明我的风格在点击事件中起作用,请查看屏幕截图

    以下是我现在所拥有的内容的简化版本:

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
                $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
    
    </div>
    </body>
    
    </html>
    
    <!DOCTYPE html>
    <html>
    <div class="navbar">
        <ul>
            <li><a href="/index.html" id="navHome">Home</a></li>
            <li><a href="/ref.html" id="navRef">References</a></li>
        </ul>
    
        <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
        <script type="text/javascript">
            $(document).on("click", "ul li", function(){
                $('.navbar li').removeClass('active');
                $(this).addClass("active");
            })
        </script>
    
            // Inserted scripts here based on other stackoverflow posts
    </div>
    </html>
    
    <!DOCTYPE html>
    <html>
    
    <head>
    <link href="style.css" rel="stylesheet" type="text/css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
            $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
        <div id="nav-placeholder"></div>
    
    </div>
    
    <script type="text/javascript">
        $(document).on("click", "ul li", function () {
            $('.navbar li').removeClass('active');
            $(this).addClass("active");
        })
    </script>
    </body>
    
    </html>
    
    <div class="navbar">
    <ul>
        <li class="active"><a href="#" id="navHome">Home</a></li>
        <li><a href="#" id="navRef">References</a></li>
    </ul>
    </div>
    

    我希望导航菜单中的当前项有一个蓝色突出显示。单击但未选择时(即,页面未实际加载),这将成功设置为活动类(背景为蓝色)。

    您将面临此问题,因为样式未应用于li项目
    .navbar ul li.active
    将在以下层次结构中查找类为
    .active
    的元素。navbar元素->ul元素->li元素->active元素

    而您希望将样式应用于类为
    .active
    的li元素。为此,您需要在下面提到选择器

    (标记和类名之间没有空格)

    上述选择器将引用具有.active类的li元素。 如果您感兴趣,那么您可以阅读有关选择器和

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
                $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
    
    </div>
    </body>
    
    </html>
    

    您正面临此问题,因为样式未应用于li项目
    .navbar ul li.active
    将在以下层次结构中查找类为
    .active
    的元素。navbar元素->ul元素->li元素->active元素

    而您希望将样式应用于类为
    .active
    的li元素。为此,您需要在下面提到选择器

    (标记和类名之间没有空格)

    上述选择器将引用具有.active类的li元素。 如果您感兴趣,那么您可以阅读有关选择器和

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
                $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
    
    </div>
    </body>
    
    </html>
    
    试试这个

    我已经将
    活动类添加到li default中,因此一旦加载,主页将默认处于活动状态

    并更新活动li的css

    Index.html

    <!DOCTYPE html>
    <html>
    <head>
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
                $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
    
    </div>
    </body>
    
    </html>
    
    <!DOCTYPE html>
    <html>
    <div class="navbar">
        <ul>
            <li><a href="/index.html" id="navHome">Home</a></li>
            <li><a href="/ref.html" id="navRef">References</a></li>
        </ul>
    
        <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
        <script type="text/javascript">
            $(document).on("click", "ul li", function(){
                $('.navbar li').removeClass('active');
                $(this).addClass("active");
            })
        </script>
    
            // Inserted scripts here based on other stackoverflow posts
    </div>
    </html>
    
    <!DOCTYPE html>
    <html>
    
    <head>
    <link href="style.css" rel="stylesheet" type="text/css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
            $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
        <div id="nav-placeholder"></div>
    
    </div>
    
    <script type="text/javascript">
        $(document).on("click", "ul li", function () {
            $('.navbar li').removeClass('active');
            $(this).addClass("active");
        })
    </script>
    </body>
    
    </html>
    
    <div class="navbar">
    <ul>
        <li class="active"><a href="#" id="navHome">Home</a></li>
        <li><a href="#" id="navRef">References</a></li>
    </ul>
    </div>
    
    试试这个

    我已经将
    活动类添加到li default中,因此一旦加载,主页将默认处于活动状态

    并更新活动li的css

    Index.html

    <!DOCTYPE html>
    <html>
    <head>
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
                $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
    
    </div>
    </body>
    
    </html>
    
    <!DOCTYPE html>
    <html>
    <div class="navbar">
        <ul>
            <li><a href="/index.html" id="navHome">Home</a></li>
            <li><a href="/ref.html" id="navRef">References</a></li>
        </ul>
    
        <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
        <script type="text/javascript">
            $(document).on("click", "ul li", function(){
                $('.navbar li').removeClass('active');
                $(this).addClass("active");
            })
        </script>
    
            // Inserted scripts here based on other stackoverflow posts
    </div>
    </html>
    
    <!DOCTYPE html>
    <html>
    
    <head>
    <link href="style.css" rel="stylesheet" type="text/css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <div class="container">
        <!--Navigation bar-->
        <div id="nav-placeholder"></div>
        <script>
            $("#nav-placeholder").load("nav.html");
        </script>
        <!--end of Navigation bar-->
    
        <div class="mainBlock">
            <div class="mainPage">
                <div class="mainContent">
                    <p>Welcome! This is my website.</p>
                </div>
            </div>
        </div>
        <div id="nav-placeholder"></div>
    
    </div>
    
    <script type="text/javascript">
        $(document).on("click", "ul li", function () {
            $('.navbar li').removeClass('active');
            $(this).addClass("active");
        })
    </script>
    </body>
    
    </html>
    
    <div class="navbar">
    <ul>
        <li class="active"><a href="#" id="navHome">Home</a></li>
        <li><a href="#" id="navRef">References</a></li>
    </ul>
    </div>
    

    在document.ready中添加单击事件。是否要在单击导航项(li)时将类设置为活动并显示蓝色背景?@SumitPatel您的意思是添加类似于
    $(document.ready)的内容(函数(){(clickeventcode)})到我的nav.html文件?右键添加内部文档。ready@Soothran我希望打开的页面被认为是活动的。所以当第一次打开网站时,“索引”应该有一个蓝色的背景。切换到“引用”时,索引应为黑色,引用应为蓝色。在document.ready中添加单击事件。是否要在单击导航项(li)时将类设置为活动状态并显示蓝色背景?@SumitPatel您的意思是添加类似于
    $(document.ready)的内容(function(){(clickeventcode)})到我的nav.html文件?右键添加内部文档。ready@Soothran我希望打开的页面被认为是活动的。所以当第一次打开网站时,“索引”应该有一个蓝色的背景。当切换到“引用”时,索引应该是黑色的,引用应该是蓝色的。我不认为空间是我的问题。我知道活动类正在成功设置,只是不是在我想要的条件下。-我可以单击导航菜单而不激活href。这将类设置为活动,背景更改为蓝色。-激活href时(即,如果我在index.html页面上,单击“主页”以基本刷新页面或单击“引用”以切换页面),背景仍为黑色。@LizLivingston如果在单击菜单项后页面被刷新,则需要检查url并将活动类分配给相应的导航项如果是,然后尝试一下,不知何故,我丢失了我试图实现的确切链接。您的回答帮助我知道在哪里实现该代码,但它仍然不起作用。事实上,没有点击处理,任何东西都不会变成蓝色。我不认为空间是我的问题。我知道活动类正在成功设置,只是不是在我想要的条件下。-我可以单击导航菜单而不激活href。这将类设置为活动,背景更改为蓝色。-激活href时(即,如果我在index.html页面上,单击“主页”以基本刷新页面或单击“引用”以切换页面),背景仍为黑色。@LizLivingston如果在单击菜单项后页面被刷新,则需要检查url并将活动类分配给相应的导航项如果是,然后尝试一下,不知何故,我丢失了我试图实现的确切链接。您的回答帮助我知道在哪里实现该代码,但它仍然不起作用。事实上,没有点击处理,任何东西都不会变成蓝色