使用 bootstrap 和 jQuery 创建带下拉菜单的导航栏
Creating nav bar with dropdowns using bootstrap and jQuery
抱歉,如果之前有人问过这个问题,但我找不到直接的答案。
我是 css 和 jQuery 的新手,我正在尝试创建一个包含菜单和子菜单的导航栏,并使用下拉菜单打开每个 单独的菜单。
这可能是一个 parent/child 问题,但我无法弄清楚如何 select 只有一个下拉菜单 jQuery,因为现在 全部悬停时打开菜单。
我做错了什么?感谢您的帮助!
HTML:
<div class="menu">
<div class="container">
<ul>
<li class="dropdown">
<a href=# class="dropdown-toggle" data-toggle="dropdown">menu1</a>
<ul class="dropdown-menu">
<li><a href="#">sub menu1</a></li>
<li><a href="#">sub menu2</a></li>
</ul>
</li>
<li class="dropdown">
<a href=# class="dropdown-toggle" data-toggle="dropdown">menu2</a>
<ul class="dropdown-menu">
<li><a href="#">sub menu1</a></li>
<li><a href="#">sub menu2</a></li>
</ul>
</li>
<li class="dropdown">
<a href=# class="dropdown-toggle" data-toggle="dropdown">menu3</a>
<ul class="dropdown-menu">
<li><a href="#">sub menu1</a></li>
<li><a href="#">sub menu2</a></li>
</ul>
</li>
</ul>
</div>
</div>
jQuery:
var main = function() {
$('.dropdown-toggle').hover(function() {
$('.dropdown-menu').toggle();
}); }$(document).ready(main);
这也将确保您的下拉列表不会消失,直到他们真正离开主 .dropdown LI
var main = function() {
$('.dropdown').hover(function() {
//on hover
$('.dropdown-menu', this).toggle();
}, function() {
//on mouseout
$('.dropdown-menu', this).toggle();
}); }$(document).ready(main);
通过写作
$('.dropdown-menu').toggle();
您正在定位与 select 或 - 所有下拉菜单相匹配的所有元素。
您需要做的是:
var main = function() {
$('.dropdown-toggle').hover(function() {
$(this).parent().find('.dropdown-menu').toggle();
});
};
$(document).ready(main);
所以我们首先 select 悬停元素 ($(this)
),然后沿着 DOM 树向上移动到 <li class="dropdown">
(.parent()
),并在其中我们找到 .dropdown-menu (.find('.dropdown-menu')
).
此外,考虑将函数绑定到 <li class="dropdown">
。这样,当您在 <ul class="dropdown-menu">
上向下移动鼠标时,菜单不会消失。这是因为当您悬停 <ul class="dropdown-menu">
时,您也悬停了它的 parent、<li class="dropdown">
,并且您可能不想仅仅因为您没有悬停您的 sub-menu 就隐藏您的 sub-menu不再有菜单标题。
边注,但很重要:请不要忘记将 aria-haspopup="true"
添加到您的 <li class="dropdown">
元素以增强可访问性和触摸支持。
这应该能为您指明正确的方向
DEMO.
<!-- Parent Menu -->
<ul class="dropdown-menu" id="parentMenu"
role="menu" aria-labelledby="dropdownMenu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<!-- Child Menu -->
<li class="dropdown-submenu">
<a tabindex="-1" href="#">More options</a>
<ul class="dropdown-menu">
<li><a tabindex="-1" href="#">Second level</a></li>
<!-- Grandchild Menu -->
<li class="dropdown-submenu">
<a href="#">More..</a>
<ul class="dropdown-menu">
<li><a href="#">3rd level</a></li>
<li><a href="#">3rd level</a></li>
</ul>
</li>
<li><a href="#">Second level</a></li>
<li><a href="#">Second level</a></li>
</ul>
</li>
</ul>
如果您不希望它在单击之前开始显示;在菜单包装器的 css 中简单地 display:none;
。然后创建一个点击功能来显示。
$( "#clickme" ).click(function() {
$( "#parentMenu" ).show( "slow", function() {
// Animation complete.
});
});
和:
<div id="clickme">Wanna see me cool menu?</div>
<!-- full menu mark up below here -->
抱歉,如果之前有人问过这个问题,但我找不到直接的答案。
我是 css 和 jQuery 的新手,我正在尝试创建一个包含菜单和子菜单的导航栏,并使用下拉菜单打开每个 单独的菜单。
这可能是一个 parent/child 问题,但我无法弄清楚如何 select 只有一个下拉菜单 jQuery,因为现在 全部悬停时打开菜单。
我做错了什么?感谢您的帮助!
HTML:
<div class="menu">
<div class="container">
<ul>
<li class="dropdown">
<a href=# class="dropdown-toggle" data-toggle="dropdown">menu1</a>
<ul class="dropdown-menu">
<li><a href="#">sub menu1</a></li>
<li><a href="#">sub menu2</a></li>
</ul>
</li>
<li class="dropdown">
<a href=# class="dropdown-toggle" data-toggle="dropdown">menu2</a>
<ul class="dropdown-menu">
<li><a href="#">sub menu1</a></li>
<li><a href="#">sub menu2</a></li>
</ul>
</li>
<li class="dropdown">
<a href=# class="dropdown-toggle" data-toggle="dropdown">menu3</a>
<ul class="dropdown-menu">
<li><a href="#">sub menu1</a></li>
<li><a href="#">sub menu2</a></li>
</ul>
</li>
</ul>
</div>
</div>
jQuery:
var main = function() {
$('.dropdown-toggle').hover(function() {
$('.dropdown-menu').toggle();
}); }$(document).ready(main);
这也将确保您的下拉列表不会消失,直到他们真正离开主 .dropdown LI
var main = function() {
$('.dropdown').hover(function() {
//on hover
$('.dropdown-menu', this).toggle();
}, function() {
//on mouseout
$('.dropdown-menu', this).toggle();
}); }$(document).ready(main);
通过写作
$('.dropdown-menu').toggle();
您正在定位与 select 或 - 所有下拉菜单相匹配的所有元素。
您需要做的是:
var main = function() {
$('.dropdown-toggle').hover(function() {
$(this).parent().find('.dropdown-menu').toggle();
});
};
$(document).ready(main);
所以我们首先 select 悬停元素 ($(this)
),然后沿着 DOM 树向上移动到 <li class="dropdown">
(.parent()
),并在其中我们找到 .dropdown-menu (.find('.dropdown-menu')
).
此外,考虑将函数绑定到 <li class="dropdown">
。这样,当您在 <ul class="dropdown-menu">
上向下移动鼠标时,菜单不会消失。这是因为当您悬停 <ul class="dropdown-menu">
时,您也悬停了它的 parent、<li class="dropdown">
,并且您可能不想仅仅因为您没有悬停您的 sub-menu 就隐藏您的 sub-menu不再有菜单标题。
边注,但很重要:请不要忘记将 aria-haspopup="true"
添加到您的 <li class="dropdown">
元素以增强可访问性和触摸支持。
这应该能为您指明正确的方向
DEMO.
<!-- Parent Menu -->
<ul class="dropdown-menu" id="parentMenu"
role="menu" aria-labelledby="dropdownMenu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<!-- Child Menu -->
<li class="dropdown-submenu">
<a tabindex="-1" href="#">More options</a>
<ul class="dropdown-menu">
<li><a tabindex="-1" href="#">Second level</a></li>
<!-- Grandchild Menu -->
<li class="dropdown-submenu">
<a href="#">More..</a>
<ul class="dropdown-menu">
<li><a href="#">3rd level</a></li>
<li><a href="#">3rd level</a></li>
</ul>
</li>
<li><a href="#">Second level</a></li>
<li><a href="#">Second level</a></li>
</ul>
</li>
</ul>
如果您不希望它在单击之前开始显示;在菜单包装器的 css 中简单地 display:none;
。然后创建一个点击功能来显示。
$( "#clickme" ).click(function() {
$( "#parentMenu" ).show( "slow", function() {
// Animation complete.
});
});
和:
<div id="clickme">Wanna see me cool menu?</div>
<!-- full menu mark up below here -->