gpt4 book ai didi

javascript - 这是最好的方法吗?

转载 作者:行者123 更新时间:2023-11-28 02:57:13 24 4
gpt4 key购买 nike

我有一个导航栏,有两个下拉菜单(作为嵌套的 ul)。我试图在单击其父级时切换子导航。或者当单击另一个父级时隐藏一个子导航。这是标记:

<div id="nav-bar">
<a href="#">A link</a> |
<ul>
<li id="feedback">
<a href="javascript:void(0);">Feedback</a>
<ul class="subnav">
<li><a href="#">Give us feedback</a></li>
</ul>
</li>
</ul> |
<a href="#">Another link</a> |
<ul>
<li id="location">
<a href="javascript:void(0);">Pick your location</a>
<ul class="subnav">
<li><a href="#">Los Angeles</a></li>
<li><a href="#">New York</a></li>
</ul>
</li>
</ul>
</div>

代码:

//hide the subnavs and give them a little down arrow
$('ul.subnav').hide().parent().append('<small>&#9660;</small>');

// show its subnav when clicked
$('#nav-bar ul li').click(function() {
var subnav = $(this).children('ul.subnav');
// hide the other's subnav if it's visible
if ($(this).attr('id') == 'location') {
subnav.toggle();
$('li#feedback').children('ul.subnav').hide();
} else {
subnav.toggle();
$('li#location').children('ul.subnav').hide();
}
});

我仍然是 JS 和 jQuery 的新手,我想知道是否有一种更简洁的方法来完成我上面想做的事情。

编辑:更好的问题是,有没有办法做到这一点,而不必显式地给 li 一个 id?

最佳答案

更好的 HTML 格式应该是这样的:

<ul id="nav-bar">
<li><a href="#">A link</a> |</li>
<li>
<a href="#">Feedback</a> |
<ul class="subnav">
<li><a href="#">Give us feedback</a></li>
</ul>
</li>
<li><a href="#">Another link</a> |</li>
<li>
<a href="#">Pick your location</a> |
<ul class="subnav">
<li><a href="#">Los Angeles</a></li>
<li><a href="#">New York</a></li>
</ul>
</li>
</ul>

那么你的 jQuery 代码将如下所示:

$(function(){
var $nav = $("#nav-bar"),
$subnav = $nav.find("ul.subnav").hide();

$nav.children('li:has(ul.subnav)').click(function(e){
e.preventDefault();
var $sub = $(this).children('ul.subnav').toggle();
$subnav.not($sub).hide();
})
})

关于javascript - 这是最好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2313855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com