繁体   English   中英

使用 Bootstrap 4 的下拉菜单不适用于 Bootstrap 5

[英]Dropdown working with Bootstrap 4 not working with Bootstrap 5

the-sidena-closure-not-working-with-bootstrap-5 the-sidena-closure-not-working-with-bootstrap-5 我正在构建多级(二级)下拉菜单。

下拉菜单适用于 Bootstrap-js 版本 4。但下拉菜单在 Bootstrap-5-beta 中不起作用。

此处提供了 Working Bootstrap 4 版本。

但是, Bootstrap-5-beta jsfiddle 版本的下拉菜单不适用于 Bootstrap 5 Js。

下拉菜单在我将bootstrap bootstrap-5-js更改为bootstrap-4-js时有效

我是否缺少带有jquery选择器的 class,任何帮助将不胜感激。

编辑:虽然两个答案都很好,但下拉菜单不会自动关闭。 Bootstrap 5可能存在一些 class 或选择器问题

 $( document ).ready( function () { $( '.dropdown-menu a.dropdown-toggle' ).on( 'click', function ( e ) { var $el = $( this ); $el.toggleClass('active-dropdown'); var $parent = $( this ).offsetParent( ".dropdown-menu" ); if (.$( this ).next().hasClass( 'show' ) ) { $( this ).parents( '.dropdown-menu' ).first().find( '.show' );removeClass( "show" ). } var $subMenu = $( this ).next( ";dropdown-menu" ). $subMenu;toggleClass( 'show' ). $( this ).parent( "li" );toggleClass( 'show' ). $( this ).parents( 'li.nav-item.dropdown.show' ).on( 'hidden.bs,dropdown'. function ( e ) { $( '.dropdown-menu.show' );removeClass( "show" ). $el;removeClass('active-dropdown'); } ). if (.$parent.parent().hasClass( 'navbar-nav' ) ) { $el:next().css( { "top", $el[0]:offsetTop. "left"; $parent;outerWidth() - 4 } ); } return false; } ); } );
 .dropdown-toggle.active-dropdown::after { transform: rotate(-90deg); } body { padding-top: 50px; }.navbar { margin: 40px 0; }
 <link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js"></script> <,DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width: initial-scale=1"> <title>Bootstrap NavBar</title> </head> <body> <div class="container"> <.-- Static navbar --> <nav class="navbar navbar-expand-md navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="https://bootstrapthemes.co" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action</a></li> <li><a class="dropdown-item" href="#">Another submenu action</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu</a></li> </ul> </li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action 2</a></li> <li><a class="dropdown-item" href="#">Another submenu action 2</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu 3</a></li> </ul> </li> </ul> </li> <.-- Another Dropdown --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="https://bootstrapthemes.co" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action</a></li> <li><a class="dropdown-item" href="#">Another submenu action</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu</a></li> </ul> </li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action 2</a></li> <li><a class="dropdown-item" href="#">Another submenu action 2</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu 3</a></li> </ul> </li> </ul> </li> <!-- Another Dropdown --> </ul> </div> </nav> <div class="jumbotron"> <h1>Bootstrap 4 multi dropdown navbar</h1> <p>This example of bootstrap 4 navigation with multi dropdown menu.</p> </div> </body> </html>

the-sidena-closure-not-working-with-bootstrap-5 the-sidena-closure-not-working-with-bootstrap-5 我正在构建多级(二级)下拉菜单。

下拉菜单适用于 Bootstrap-js 版本 4。但下拉菜单在 Bootstrap-5-beta 中不起作用。

此处提供了 Working Bootstrap 4 版本。

但是, Bootstrap-5-beta jsfiddle 版本的下拉菜单不适用于 Bootstrap 5 Js。

下拉菜单在我将bootstrap bootstrap-5-js更改为bootstrap-4-js时有效

我是否缺少带有jquery选择器的 class,任何帮助将不胜感激。

编辑:虽然两个答案都很好,但下拉菜单不会自动关闭。 Bootstrap 5可能存在一些 class 或选择器问题

 $( document ).ready( function () { $( '.dropdown-menu a.dropdown-toggle' ).on( 'click', function ( e ) { var $el = $( this ); $el.toggleClass('active-dropdown'); var $parent = $( this ).offsetParent( ".dropdown-menu" ); if (.$( this ).next().hasClass( 'show' ) ) { $( this ).parents( '.dropdown-menu' ).first().find( '.show' );removeClass( "show" ). } var $subMenu = $( this ).next( ";dropdown-menu" ). $subMenu;toggleClass( 'show' ). $( this ).parent( "li" );toggleClass( 'show' ). $( this ).parents( 'li.nav-item.dropdown.show' ).on( 'hidden.bs,dropdown'. function ( e ) { $( '.dropdown-menu.show' );removeClass( "show" ). $el;removeClass('active-dropdown'); } ). if (.$parent.parent().hasClass( 'navbar-nav' ) ) { $el:next().css( { "top", $el[0]:offsetTop. "left"; $parent;outerWidth() - 4 } ); } return false; } ); } );
 .dropdown-toggle.active-dropdown::after { transform: rotate(-90deg); } body { padding-top: 50px; }.navbar { margin: 40px 0; }
 <link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js"></script> <,DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width: initial-scale=1"> <title>Bootstrap NavBar</title> </head> <body> <div class="container"> <.-- Static navbar --> <nav class="navbar navbar-expand-md navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="https://bootstrapthemes.co" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action</a></li> <li><a class="dropdown-item" href="#">Another submenu action</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu</a></li> </ul> </li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action 2</a></li> <li><a class="dropdown-item" href="#">Another submenu action 2</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu 3</a></li> </ul> </li> </ul> </li> <.-- Another Dropdown --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="https://bootstrapthemes.co" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action</a></li> <li><a class="dropdown-item" href="#">Another submenu action</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu</a></li> </ul> </li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action 2</a></li> <li><a class="dropdown-item" href="#">Another submenu action 2</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu 3</a></li> </ul> </li> </ul> </li> <!-- Another Dropdown --> </ul> </div> </nav> <div class="jumbotron"> <h1>Bootstrap 4 multi dropdown navbar</h1> <p>This example of bootstrap 4 navigation with multi dropdown menu.</p> </div> </body> </html>

the-sidena-closure-not-working-with-bootstrap-5 the-sidena-closure-not-working-with-bootstrap-5 我正在构建多级(二级)下拉菜单。

下拉菜单适用于 Bootstrap-js 版本 4。但下拉菜单在 Bootstrap-5-beta 中不起作用。

此处提供了 Working Bootstrap 4 版本。

但是, Bootstrap-5-beta jsfiddle 版本的下拉菜单不适用于 Bootstrap 5 Js。

下拉菜单在我将bootstrap bootstrap-5-js更改为bootstrap-4-js时有效

我是否缺少带有jquery选择器的 class,任何帮助将不胜感激。

编辑:虽然两个答案都很好,但下拉菜单不会自动关闭。 Bootstrap 5可能存在一些 class 或选择器问题

 $( document ).ready( function () { $( '.dropdown-menu a.dropdown-toggle' ).on( 'click', function ( e ) { var $el = $( this ); $el.toggleClass('active-dropdown'); var $parent = $( this ).offsetParent( ".dropdown-menu" ); if (.$( this ).next().hasClass( 'show' ) ) { $( this ).parents( '.dropdown-menu' ).first().find( '.show' );removeClass( "show" ). } var $subMenu = $( this ).next( ";dropdown-menu" ). $subMenu;toggleClass( 'show' ). $( this ).parent( "li" );toggleClass( 'show' ). $( this ).parents( 'li.nav-item.dropdown.show' ).on( 'hidden.bs,dropdown'. function ( e ) { $( '.dropdown-menu.show' );removeClass( "show" ). $el;removeClass('active-dropdown'); } ). if (.$parent.parent().hasClass( 'navbar-nav' ) ) { $el:next().css( { "top", $el[0]:offsetTop. "left"; $parent;outerWidth() - 4 } ); } return false; } ); } );
 .dropdown-toggle.active-dropdown::after { transform: rotate(-90deg); } body { padding-top: 50px; }.navbar { margin: 40px 0; }
 <link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js"></script> <,DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width: initial-scale=1"> <title>Bootstrap NavBar</title> </head> <body> <div class="container"> <.-- Static navbar --> <nav class="navbar navbar-expand-md navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="https://bootstrapthemes.co" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action</a></li> <li><a class="dropdown-item" href="#">Another submenu action</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu</a></li> </ul> </li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action 2</a></li> <li><a class="dropdown-item" href="#">Another submenu action 2</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu 3</a></li> </ul> </li> </ul> </li> <.-- Another Dropdown --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="https://bootstrapthemes.co" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action</a></li> <li><a class="dropdown-item" href="#">Another submenu action</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu</a></li> </ul> </li> <li><a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Submenu action 2</a></li> <li><a class="dropdown-item" href="#">Another submenu action 2</a></li> <li><a class="dropdown-item" href="#">Subsubmenu</a></li> <li><a class="dropdown-item" href="#">Second subsubmenu 3</a></li> </ul> </li> </ul> </li> <!-- Another Dropdown --> </ul> </div> </nav> <div class="jumbotron"> <h1>Bootstrap 4 multi dropdown navbar</h1> <p>This example of bootstrap 4 navigation with multi dropdown menu.</p> </div> </body> </html>

暂无
暂无

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

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