Я корейский новичок в HTML. Я делал это в течение нескольких дней, и каждое меню отображалось при нажатии. Однако проблема в том, что при нажатии на шапку меню шапки появляются, а при нажатии на другое меню меню шапки исчезает, а я хочу, чтобы появлялись менюшки по нажатию. Что я должен делать? И исходник слишком длинный, мне тоже не подходит.
HTML
----------sidebar----------------
<div class = "menu" id = "cap"><p>모자</p>
</div>
<div class = "menu" id = "costume"><p>상의</p>
</div>
<div class = "menu" id = "outer"><p>아우터</p>
</div>
<div class = "menu" id = "onepice"><p>원피스</p>
</div>
<div class = "menu" id = "pant"><p>하의</p>
</div>
<div class = "menu" id = "shoes"><p>신발</p>
</div>
<div class = "menu" id = "bag"><p>가방</p>
</div>
<div class = "menu" id = "accessory"><p>액세서리</p>
</div>
<div class = "menu" id = "sports"><p>스포츠</p>
</div>
----------sidebar----------------
<div class = "caps" id = "menu_list">
<div class = "top">모자</div>
<a href = "javascript:;">볼캡</a>
<a href = "javascript:;">비니</a>
<a href = "javascript:;">버킷</a>
<a href = "javascript:;">헌팅</a>
<a href = "javascript:;">페도라</a>
<a href = "javascript:;">트루퍼</a>
</div>
<div class = "costumes" id = "menu_list">
<div class = "top">상의</div>
<a href = "javascript:;">반팔 </a>
<a href = "javascript:;">긴팔</a>
<a href = "javascript:;">후드티</a>
<a href = "javascript:;">카라티</a>
<a href = "javascript:;">셔츠</a>
<a href = "javascript:;">니트</a>
</div>
<div class = "outers" id = "menu_list">
<div class = "top">아우터</div>
<a href = "javascript:;">후드 집업</a>
<a href = "javascript:;">가디건</a>
<a href = "javascript:;">슈트</a>
<a href = "javascript:;">재킷</a>
<a href = "javascript:;">코트</a>
<a href = "javascript:;">패딩</a>
<a href = "javascript:;">베스트</a>
</div>
<div class = "onepices" id = "menu_list">
<div class = "top">원피스</div>
<a href = "javascript:;l">미니 원피스</a>
=<a href = "javascript:;">미디 원피스</a>
=<a href = "javascript:;">맥시 원피스</a>
</div>
<div class = "pants" id = "menu_list">
<div class = "top">바지</div>
<a href = "javascript:;">청바지</a>
<a href = "javascript:;">면바지</a>
<a href = "javascript:;">반바지</a>
<a href = "javascript:;">슬랙스</a>
<a href = "javascript:;">레깅스</a>
</div>
<div class = "bags" id = "menu_list">
<div class = "top">가방</div>
<a href = "javascript:;">백 팩</a>
<a href = "javascript:;">크로스 백</a>
<a href = "javascript:;">숄더 백</a>
<a href = "javascript:;">클러치 백</a>
<a href = "javascript:;">웨이스트 백</a>
<a href = "javascript:;">캐리어</a>
</div>
<div class = "shoess" id = "menu_list">
<div class = "top">신발</div>
<a href = "javascript:;">캔버스</a>
<a href = "javascript:;">단화</a>
<a href = "javascript:;">런닝화</a>
<a href = "javascript:;">축구화</a>
<a href = "javascript:;">샌들</a>
</div>
<div class = "accessorys" id = "menu_list">
<div class = "top">액세서리</div>
<a href = "javascript:;">안경</a>
<a href = "javascript:;">마스크</a>
<a href = "javascript:;">스카프</a>
<a href = "javascript:;">머플러</a>
<a href = "javascript:;">넥타이</a>
<a href = "javascript:;">장갑</a>
</div>
<div class = "sportss" id = "menu_list" >
<div class = "top">스포츠</div>
<a href = "javascript:;">수영용품</a>
<a href = "javascript:;">수영복</a>
<a href = "javascript:;">기능성 상의</a>
<a href = "javascript:;">기능성 하의</a>
</div>
JS
$(document).ready(function(){
$("#cap").click(function(){
$(".caps").toggle();
});
$("#costume").click(function(){
$(".costumes").toggle();
});
$("#outer").click(function(){
$(".outers").toggle();
});
$("#onepice").click(function(){
$(".onepices").toggle();
});
$("#pant").click(function(){
$(".pants").toggle();
});
$("#bag").click(function(){
$(".bags").toggle();
});
$("#shoes").click(function(){
$(".shoess").toggle();
});
$("#accessory").click(function(){
$(".accessorys").toggle();
});
$("#sports").click(function(){
$(".sportss").toggle();
});
css
#menu_list{
position: fixed;
height: 100%;
width: 400px;
background-color: lawngreen;
display: none;}
Я новичок и не знаю что делать.
При переключении вы можете добавить к нему класс, например active
:
$("#cap").click(function() {
$(".caps").toggle();
document.querySelector(".caps").classList.add("active");
});
Ну, для чего это было? Это как знак. Мы отметили, что это меню открыто.
Тогда в нашем коде мы можем просто найти отмеченное меню и удалить класс:
$("#cap").click(function() {
$(".caps").toggle();
document.querySelector(".active").classList.remove("active");
document.querySelector(".caps").classList.add("active");
});
Кажется, я понял тебя?
Спасибо за ваш комментарий.
Это то, что вы хотите?
menu-list
несколько раз, добавьте его в class
НЕ id
.$(document).ready(function(){
$('.menu').click(function(){
$('.menu_list').css('display', 'none');
});
$("#cap").click(function(){
$(".caps").toggle();
});
$("#costume").click(function(){
$(".costumes").toggle();
});
$("#outer").click(function(){
$(".outers").toggle();
});
$("#onepice").click(function(){
$(".onepices").toggle();
});
$("#pant").click(function(){
$(".pants").toggle();
});
$("#bag").click(function(){
$(".bags").toggle();
});
$("#shoes").click(function(){
$(".shoess").toggle();
});
$("#accessory").click(function(){
$(".accessorys").toggle();
});
$("#sports").click(function(){
$(".sports").toggle();
});
});
.menu {
background:orange;
width:100px;
}
.menu_list{
position: fixed;
right:0;
top:0;
height: 100px;
width: 200px;
background-color: green;
display: none;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!----------sidebar---------------- -->
<div class = "menu" id = "cap"><p>모자</p></div>
<div class = "menu" id = "costume"><p>상의</p></div>
<div class = "menu" id = "outer"><p>아우터</p></div>
<div class = "menu" id = "onepice"><p>원피스</p></div>
<div class = "menu" id = "pant"><p>하의</p></div>
<div class = "menu" id = "shoes"><p>신발</p></div>
<div class = "menu" id = "bag"><p>가방</p></div>
<div class = "menu" id = "accessory"><p>액세서리</p></div>
<div class = "menu" id = "sports"><p>스포츠</p></div>
<!----------sidebar---------------- -->
<div class = "caps menu_list">
<div class = "top">모자</div>
<a href = "javascript:;">볼캡</a>
<a href = "javascript:;">비니</a>
<a href = "javascript:;">버킷</a>
<a href = "javascript:;">헌팅</a>
<a href = "javascript:;">페도라</a>
<a href = "javascript:;">트루퍼</a>
</div>
<div class = "costumes menu_list">
<div class = "top">상의</div>
<a href = "javascript:;">반팔 </a>
<a href = "javascript:;">긴팔</a>
<a href = "javascript:;">후드티</a>
<a href = "javascript:;">카라티</a>
<a href = "javascript:;">셔츠</a>
<a href = "javascript:;">니트</a>
</div>
<div class = "outers menu_list">
<div class = "top">아우터</div>
<a href = "javascript:;">후드 집업</a>
<a href = "javascript:;">가디건</a>
<a href = "javascript:;">슈트</a>
<a href = "javascript:;">재킷</a>
<a href = "javascript:;">코트</a>
<a href = "javascript:;">패딩</a>
<a href = "javascript:;">베스트</a>
</div>
<div class = "onepices menu_list">
<div class = "top">원피스</div>
<a href = "javascript:;l">미니 원피스</a>
=<a href = "javascript:;">미디 원피스</a>
=<a href = "javascript:;">맥시 원피스</a>
</div>
<div class = "pants menu_list">
<div class = "top">바지</div>
<a href = "javascript:;">청바지</a>
<a href = "javascript:;">면바지</a>
<a href = "javascript:;">반바지</a>
<a href = "javascript:;">슬랙스</a>
<a href = "javascript:;">레깅스</a>
</div>
<div class = "bags menu_list">
<div class = "top">가방</div>
<a href = "javascript:;">백 팩</a>
<a href = "javascript:;">크로스 백</a>
<a href = "javascript:;">숄더 백</a>
<a href = "javascript:;">클러치 백</a>
<a href = "javascript:;">웨이스트 백</a>
<a href = "javascript:;">캐리어</a>
</div>
<div class = "shoess menu_list">
<div class = "top">신발</div>
<a href = "javascript:;">캔버스</a>
<a href = "javascript:;">단화</a>
<a href = "javascript:;">런닝화</a>
<a href = "javascript:;">축구화</a>
<a href = "javascript:;">샌들</a>
</div>
<div class = "accessorys menu_list">
<div class = "top">액세서리</div>
<a href = "javascript:;">안경</a>
<a href = "javascript:;">마스크</a>
<a href = "javascript:;">스카프</a>
<a href = "javascript:;">머플러</a>
<a href = "javascript:;">넥타이</a>
<a href = "javascript:;">장갑</a>
</div>
<div class = "sports menu_list">
<div class = "top">스포츠</div>
<a href = "javascript:;">수영용품</a>
<a href = "javascript:;">수영복</a>
<a href = "javascript:;">기능성 상의</a>
<a href = "javascript:;">기능성 하의</a>
</div>
Спасибо за ваш комментарий. cablemaker.xyz Вот так я хочу. Если вы попросите слишком много, вы можете отказаться. Она исчезает при нажатии того же меню.
Вам не нужно использовать так много событий щелчка, вместо этого дайте настраиваемый атрибут вашему элементу div, где это значение совпадает со значением id
menu
. Затем просто получите это значение id
всякий раз, когда .menu
нажимается, и покажите div, где значение соответствия, т.е.: $(".menu_list[data-id = " + id + "]")
.
Демонстрационный код:
$('.menu').click(function() {
$('.menu_list').css('display', 'none'); //hide
//check if menu has active clas
if ($(this).hasClass("active")) {
//remove same
$(this).removeClass("active")
} else {
//remove from other menus
$(".menu").not(this).removeClass("active")
$(this).addClass("active") //add active
var id = $(this).attr("id");
//show div where data-id matches
$(".menu_list[data-id = " + id + "]").css('display', 'block');
}
});
.menu_list {
height: 250%;
width: 400px;
background-color: lawngreen;
display: none;
}
.active {
color: red
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
----------sidebar----------------
<div class = "menu" id = "cap">
<p>모자</p>
</div>
<div class = "menu" id = "costume">
<p>상의</p>
</div>
<div class = "menu" id = "outer">
<p>아우터</p>
</div>
<div class = "menu" id = "onepice">
<p>원피스</p>
</div>
<div class = "menu" id = "pant">
<p>하의</p>
</div>
<div class = "menu" id = "shoes">
<p>신발</p>
</div>
<div class = "menu" id = "bag">
<p>가방</p>
</div>
<div class = "menu" id = "accessory">
<p>액세서리</p>
</div>
<div class = "menu" id = "sports">
<p>스포츠</p>
</div>
----------sidebar----------------
<!--added data-id which macthes id of menu-->
<div data-id = "cap" class = "caps menu_list">
<div class = "top">모자</div>
<a href = "javascript:;">볼캡</a>
<a href = "javascript:;">비니</a>
<a href = "javascript:;">버킷</a>
<a href = "javascript:;">헌팅</a>
<a href = "javascript:;">페도라</a>
<a href = "javascript:;">트루퍼</a>
</div>
<div data-id = "cap" class = "costumes menu_list">
<div class = "top">상의</div>
<a href = "javascript:;">반팔 </a>
<a href = "javascript:;">긴팔</a>
<a href = "javascript:;">후드티</a>
<a href = "javascript:;">카라티</a>
<a href = "javascript:;">셔츠</a>
<a href = "javascript:;">니트</a>
</div>
<div data-id = "outer" class = "outers menu_list">
<div class = "top">아우터</div>
<a href = "javascript:;">후드 집업</a>
<a href = "javascript:;">가디건</a>
<a href = "javascript:;">슈트</a>
<a href = "javascript:;">재킷</a>
<a href = "javascript:;">코트</a>
<a href = "javascript:;">패딩</a>
<a href = "javascript:;">베스트</a>
</div>
<div data-id = "onepice" class = "onepices menu_list">
<div class = "top">원피스</div>
<a href = "javascript:;l">미니 원피스</a> =
<a href = "javascript:;">미디 원피스</a> =
<a href = "javascript:;">맥시 원피스</a>
</div>
<div data-id = "pant" class = "pants menu_list">
<div class = "top">바지</div>
<a href = "javascript:;">청바지</a>
<a href = "javascript:;">면바지</a>
<a href = "javascript:;">반바지</a>
<a href = "javascript:;">슬랙스</a>
<a href = "javascript:;">레깅스</a>
</div>
<div data-id = "bag" class = "bags menu_list">
<div class = "top">가방</div>
<a href = "javascript:;">백 팩</a>
<a href = "javascript:;">크로스 백</a>
<a href = "javascript:;">숄더 백</a>
<a href = "javascript:;">클러치 백</a>
<a href = "javascript:;">웨이스트 백</a>
<a href = "javascript:;">캐리어</a>
</div>
<div data-id = "shoes" class = "shoess menu_list">
<div class = "top">신발</div>
<a href = "javascript:;">캔버스</a>
<a href = "javascript:;">단화</a>
<a href = "javascript:;">런닝화</a>
<a href = "javascript:;">축구화</a>
<a href = "javascript:;">샌들</a>
</div>
<div data-id = "accessory" class = "accessorys menu_list">
<div class = "top">액세서리</div>
<a href = "javascript:;">안경</a>
<a href = "javascript:;">마스크</a>
<a href = "javascript:;">스카프</a>
<a href = "javascript:;">머플러</a>
<a href = "javascript:;">넥타이</a>
<a href = "javascript:;">장갑</a>
</div>
<div data-id = "sports" class = "sportss menu_list">
<div class = "top">스포츠</div>
<a href = "javascript:;">수영용품</a>
<a href = "javascript:;">수영복</a>
<a href = "javascript:;">기능성 상의</a>
<a href = "javascript:;">기능성 하의</a>
</div>
Это ответ, который я хочу. Большое спасибо. Тем не менее, я все еще новичок. Вам нужно понять ответ.
Привет, дайте мне знать, если у вас есть какие-либо сомнения в приведенном выше демонстрационном коде.
Спасибо. Завтра приду задавать вопросы.
Спасибо, вчера я не понимал JavaScript, поэтому $('.menu_list').css('display','none'); Почему это сложилось? .menu_list уже скрыт.
привет, каждый раз, когда вы нажимаете на меню, новое menu_list
должно отображаться, поэтому эта строка будет скрывать другой список меню, а затем использование $(".menu_list[data-id = " + id + "]").css('display', 'block');
покажет только список меню, который был нажат.
Выполняет ли JavaScript сначала оператор if?
да, сначала выполняется if
, затем часть (если условие не выполняется)
$(".menu").not(this).removeClass("active") Что это значит?
Давайте продолжим обсуждение в чате.
зачем использовать так много событий кликов?