どの要素がクリックされていますか? #nav-mobile
ではなく、a
が内部にあります。セレクタとして#nav-mobile a
が必要です。
ここで、a
(コールバック関数内の$(this)
と呼ばれます)に関連してul
がありますか?彼らは即時の兄弟ですので、$(this).next('ul')
が最善の策です。
他のすべてのメニュー項目を閉じるには、ul
を変数に保存し、.not()
を使用してもう1つのul
を選択します。
コードは次のようになります。
$(document).ready(function() {
$('#nav-mobile ul').hide();
$('#nav-mobile a').click(function(e) {
e.preventDefault();
var $menuItem = $(this).next('ul');
$menuItem.slideToggle();
$('#nav-mobile ul').not($menuItem).slideUp();
});
});
#tab1, #tab2, #tab3{
background-color:grey;
color:white;
padding:5px 10px;
display:block;
width:100px;
border-bottom:1px solid;
}
#tab1:hover, #tab2:hover, #tab3:hover{
background-color:darkgrey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="nav-mobile">
<a href="#" id="tab1">Products</a>
<ul style="display: none;">
<li><a href="index.php">Home</a></li>
<li><a href="#">Why Us</a></li>
<li><a href="#">Our Work</a></li>
</ul>
<a href="#" id="tab2">About</a>
<ul style="display: none;">
<li><a href="#">Our Equipment</a></li>
<li><a href="#">Video Production</a></li>
</ul>
<a href="#" id="tab3">Contact</a>
<ul style="display: none;">
<li id="last-child"><a href="#">Contact</a></li>
<li id="last-child"><a href="#">Social Media</a></li>
</ul>
</div>
あなたの質問でスニペットようなコードを含むように役立つだろう。 – darrylyeo