简体   繁体   English

jQuery选项卡-选择所有菜单ul元素

[英]jQuery tabs - Selecting all menu ul elements

I'm new to using jQuery and my first bigger improvement to static website is a jQuery tabs which let's me switch main page divs on sidebar and topbar menus. 我是使用jQuery的新手,而我对静态网站的第一个较大改进是jQuery选项卡,让我在侧边栏和顶部栏菜单上切换主页div。 I can't seem to get the script to work with every nav class element. 我似乎无法让脚本与每个nav类元素一起使用。 As of right now it's working on said elements: Poradnik 1,2,3,4 and I'd also want them to work on Strona główna, Spis treści, Poradniki and O autorze. 截至目前,它正在处理上述元素:Poradnik 1,2,3,4,我也希望他们在Stronagłówna,Spistreści,Poradniki和O autorze上工作。 Basically all elements that are located under nav. 基本上所有位于导航下的元素。 What should I change? 我应该改变什么? Could anyone help me out with it? 有人可以帮我吗? Thank you. 谢谢。

Below I'll put the code for the required elements. 下面,我将放置所需元素的代码。

 $(document).ready(function(){ $('ul.nav ul li').click(function(){ var tab_id = $(this).attr('data-tab'); $('ul.nav ul li').removeClass('current'); $('.tab-content').removeClass('current'); $(this).addClass('current'); $("#"+tab_id).addClass('current'); }) }) 
 .tab-content{ display: none; padding: 15px; } .tab-content.current{ display: inherit; } .topmenu { width: 875px; display: block; position: relative; float: left; height: 90px; font-size: 20px; } .topmenu ul { padding: 25px; } .topmenu ul.nav a, ul.nav a:visited { display: block; width: 120px; height: 25px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: center; padding: 5px; } .topmenu ul.nav li a:hover { width: 120px; height: 25px; background: #D2E2FF; color: #000; border: 1px solid black; padding-top: 4px; padding-right: 4px; padding-bottom: 8px; padding-left: 4px; } .topmenu ul.nav li:hover ul { left: 0px; top: 38px; padding: 0px; border:solid 1px; } .topmenu ul.nav li:hover ul li a { padding: 6px; width: 250px; background-color: #FFFFFF; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-bottom-style: solid; border-top-color: #000; border-right-color: #000; border-bottom-color: #000; border-left-color: #000; border-right-style: none; border-left-style: none; } ul.nav { list-style: none; margin-bottom: 15px; } ul.nav li { float:left; } ul.nav a, ul.nav a:visited { display: block; width: 25px; height: 25px; text-decoration: none; background-color: #FFFFFF; padding: 3px; } ul.nav li a:hover { background-color: #D2E2FF; color: #000; border: solid 1px black; padding: 2px; } ul.nav ul a:hover { background-color: #D2E2FF; color: #000; padding: 3px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; } ul.nav li a:focus, ul.nav li a:active { color: #000; text-decoration: underline; } ul.nav ul { position: absolute; left: -9999px; top: -9999px; list-style-type: none; } ul.nav li:hover { position: relative; } ul.nav li:hover ul { left: 30px; top: 0px; padding: 0px; border: solid 1px; } ul.nav li:hover ul li a { padding: 3px; width:300px; background-color: #FFFFFF; } ul.nav li:hover ul li a:hover { background: #D2E2FF; color: #000; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="topmenu"> <ul class="nav"> <li class="tab-link current" data-tab="strona_glowna"><a href="#">Strona główna</a></li> <li class="tab-link" data-tab="spis_tresci"><a href="#">Spis treści</a></li> <li><a href="#">Poradniki</a> <ul> <li class="tab-link" data-tab="poradnik_1"><a href="#">Poradnik 1</a></li> <li class="tab-link" data-tab="poradnik_2"><a href="#">Poradnik 2</a></li> <li class="tab-link" data-tab="poradnik_3"><a href="#">Poradnik 3</a></li> <li class="tab-link" data-tab="poradnik_4"><a href="#">Poradnik 4</a></li> </ul> </li> <li class="tab-link" data-tab="o_autorze"><a href="#">O autorze</a></li> </ul> </div> <div id="strona_glowna" class="tab-content current"> <h1>Strona główna</h1> <p>Strona główna</p> </div> <div id="spis_tresci" class="tab-content"> <h1>Spis treści</h1> <p>Spis treści</p> </div> <div id="poradnik_1" class="tab-content"> <h1>Poradnik 1</h1> <p>Poradnik 1</p> </div> <div id="poradnik_2" class="tab-content"> <h1>Poradnik 2</h1> <p>Poradnik 2</p> </div> <div id="poradnik_3" class="tab-content"> <h1>Poradnik 3</h1> <p>Poradnik 3</p> </div> <div id="poradnik_4" class="tab-content"> <h1>Poradnik 4</h1> <p>Poradnik 4</p> </div> <div id="o_autorze" class="tab-content"> <h1>O autorze</h1> <p>O autorze</p> </div> 

select other li like following: 选择其他李,如下所示:

$(document).ready(function(){

    $('ul.nav li').click(function(){
        var tab_id = $(this).attr('data-tab');
        if(typeof(tab_id) != 'undefined'){  
            $('ul.nav li').removeClass('current');
            $('.tab-content').removeClass('current');

            $(this).addClass('current');
            $("#"+tab_id).addClass('current');
        }      
    })  
})

simply follow the chain in your HTML for jquery selectors. 只需遵循HTML中的jquery选择器链即可。

demo fiddle. 演示小提琴。 http://jsfiddle.net/6y7z1Lmq/1/ http://jsfiddle.net/6y7z1Lmq/1/

This should work now. 现在应该可以使用了。 The problem is that when you click on one of the inner <li> 's, you are also clicking on one of the outer <li> 's. 问题是,当您单击内部<li>之一时,您也单击了外部 <li> To avoid this, use this JQuery/JavaScript function: 为了避免这种情况,请使用此JQuery / JavaScript函数:

$(document).ready(function() {
  $('ul.nav li:not(.innerNav)').click(function() {
    var tab_id = $(this).attr('data-tab');
    $('.ul.nav > li').removeClass('current');
    $('.tab-content').removeClass('current');
    $(this).addClass('current');
    $("#" + tab_id).addClass('current');
  });
});

and give the <li> with the <ul> inside, the class innerNav . 并给<li> <ul>里面的<ul> ,类是innerNav

 $(document).ready(function() { $('ul.nav li:not(.innerNav)').click(function() { var tab_id = $(this).attr('data-tab'); $('.ul.nav > li').removeClass('current'); $('.tab-content').removeClass('current'); $(this).addClass('current'); $("#" + tab_id).addClass('current'); }); }); 
 .tab-content { display: none; padding: 15px; } .tab-content.current { display: inherit; } .topmenu { width: 875px; display: block; position: relative; float: left; height: 90px; font-size: 20px; } .topmenu ul { padding: 25px; } .topmenu ul.nav a, ul.nav a:visited { display: block; width: 120px; height: 25px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: center; padding: 5px; } .topmenu ul.nav li a:hover { width: 120px; height: 25px; background: #D2E2FF; color: #000; border: 1px solid black; padding-top: 4px; padding-right: 4px; padding-bottom: 8px; padding-left: 4px; } .topmenu ul.nav li:hover ul { left: 0px; top: 38px; padding: 0px; border: solid 1px; } .topmenu ul.nav li:hover ul li a { padding: 6px; width: 250px; background-color: #FFFFFF; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-bottom-style: solid; border-top-color: #000; border-right-color: #000; border-bottom-color: #000; border-left-color: #000; border-right-style: none; border-left-style: none; } ul.nav { list-style: none; margin-bottom: 15px; } ul.nav li { float: left; } ul.nav a, ul.nav a:visited { display: block; width: 25px; height: 25px; text-decoration: none; background-color: #FFFFFF; padding: 3px; } ul.nav li a:hover { background-color: #D2E2FF; color: #000; border: solid 1px black; padding: 2px; } ul.nav ul a:hover { background-color: #D2E2FF; color: #000; padding: 3px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; } ul.nav li a:focus, ul.nav li a:active { color: #000; text-decoration: underline; } ul.nav ul { position: absolute; left: -9999px; top: -9999px; list-style-type: none; } ul.nav li:hover { position: relative; } ul.nav li:hover ul { left: 30px; top: 0px; padding: 0px; border: solid 1px; } ul.nav li:hover ul li a { padding: 3px; width: 300px; background-color: #FFFFFF; } ul.nav li:hover ul li a:hover { background: #D2E2FF; color: #000; } 
 <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> </script> <title></title> </head> <body> <div class="topmenu"> <ul class="nav"> <li class="tab-link current" data-tab="strona_glowna"> <a href="#">Strona główna</a> </li> <li class="tab-link" data-tab="spis_tresci"> <a href="#">Spis treści</a> </li> <li class="innerNav"> <a href="#">Poradniki</a> <ul> <li class="tab-link" data-tab="poradnik_1"> <a href="#">Poradnik 1</a> </li> <li class="tab-link" data-tab="poradnik_2"> <a href="#">Poradnik 2</a> </li> <li class="tab-link" data-tab="poradnik_3"> <a href="#">Poradnik 3</a> </li> <li class="tab-link" data-tab="poradnik_4"> <a href="#">Poradnik 4</a> </li> </ul> </li> <li class="tab-link" data-tab="o_autorze"> <a href="#">O autorze</a> </li> </ul> </div> <div class="tab-content current" id="strona_glowna"> <h1>Strona główna</h1> <p>Strona główna</p> </div> <div class="tab-content" id="spis_tresci"> <h1>Spis treści</h1> <p>Spis treści</p> </div> <div class="tab-content" id="poradnik_1"> <h1>Poradnik 1</h1> <p>Poradnik 1</p> </div> <div class="tab-content" id="poradnik_2"> <h1>Poradnik 2</h1> <p>Poradnik 2</p> </div> <div class="tab-content" id="poradnik_3"> <h1>Poradnik 3</h1> <p>Poradnik 3</p> </div> <div class="tab-content" id="poradnik_4"> <h1>Poradnik 4</h1> <p>Poradnik 4</p> </div> <div class="tab-content" id="o_autorze"> <h1>O autorze</h1> <p>O autorze</p> </div> </body> </html> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM