次のメニューがあります-正常に動作します。リスト項目をクリックするとドロップダウンするように機能しています。別のリスト項目をクリックすると、古い項目が閉じ、クリックした項目が開きます。ただし、既に開いているリスト項目をクリックする (閉じるため)。閉じてから再び開きます。閉じて、再び開かないようにするにはどうすればよいですか。以下の jsfiddle とコードを参照してください。ありがとう
<nav id="global_nav">
<ul class="no-js">
<li><a href="#">ABOUT US</a>
<ul>
<li><a href="#">About Us</a></li>
</ul>
</li>
<li><a href="#">PRODUCTS</a>
<ul>
<li><a href="#">Products</a></li>
<li><a href="#">Tractor</a></li>
<li><a href="#">Organic</a></li>
</ul>
</li>
</ul>
</nav>
JS
$(document).ready(function(){
$('#global_nav > ul').toggleClass('no-js js');
var menuList = $("#global_nav").find(".js").find("li");
menuList.find("ul").hide();
menuList.on("click", function(){
menuList.removeClass("selected");
menuList.find("ul").slideUp(400);
$(this).find("ul").slideDown(400);
$(this).addClass("selected");
});
});
編集 すべての入力をありがとう
次のように動作しました-最初に質問に答えた人が提出した条件を使用しましたが、今では答えを見つけることができません-少し微調整しましたが、jsfiddle:リンクをここに示します-すべてがうまく機能します-ありがとう:)
新しい JS
$(document).ready(function(){
$('#global_nav > ul').toggleClass('no-js js');
var menuList = $(".js").find("li");
menuList.find("ul").hide();
menuList.on("click", function(){
menuList.find("ul").slideUp(400);
if (!($(this).find("ul").is(":visible"))) {
menuList.removeClass("selected");
$(this).find("ul").slideDown(400);
$(this).addClass("selected");
};
});
});