简体   繁体   English

当我单击父 div 时如何切换子 div

[英]How to toggle a child div when i click on a parent div

I'm currently trying to create a dashboard for my website and i'm a pretty begginer with javascript.我目前正在尝试为我的网站创建仪表板,而且我是 javascript 的初学者。 In this case i'm trying to create a code for toggling a div, i tried to create a function to click in a div with the class "togglebox", and make his child div "togglebox-body" toggle, but it isn't working.在这种情况下,我正在尝试创建一个用于切换 div 的代码,我尝试创建一个 function 以单击带有 class“togglebox”的 div,并使他的子 div “togglebox-body”切换,但它不是工作。

 $("main").on('click', '.togglebox', function() { const thisBox = $(this).children(".togglebox-body") thisBox.toggle() })
 @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap'); /* Common */ html { padding: 0; margin: 0; font-family: 'Poppins', sans-serif; --primary: #111; --gray-dark-1: #191919; --gray-dark--2: #161616; --gray-dark-3: #151515; --border: #222; --text: #555; --text-2: #969696; --white: #fff; } body { background: var(--primary); color: var(--white); flex-grow: 1; margin: 32px auto; position: relative; width: auto; max-width: 540px; } a, p, span, h1, h2, h3, h4, h5 { margin: 0; font-weight: 400; text-decoration: none; } h1, h2, h3, h4, h5 { line-height: 1.2em; } hr { width: 100%; border: 0; border-top: 1px solid var(--border); margin: 1.5rem 0; } hr { width: 100%; border: 0; border-top: 1px solid var(--border); margin: 1.5rem 0; } input, textarea { padding: 15px 10px; background-color: var(--gray-dark-3); border: 1px solid var(--border); color: var(--text); font-family: 'Poppins', sans-serif; font-size: 16px; } textarea:focus, input:focus { outline: none; } button { padding: 15px; background-color: var(--gray-dark-1); border: 1px solid var(--border); color: var(--text); font-family: 'Poppins', sans-serif; font-size: 16px; cursor: pointer; } footer { font-size: 12px; color: var(--text) } footer a { color: inherit; text-decoration: underline; }::-webkit-scrollbar { width: 12px; }::-webkit-scrollbar-track { background: transparent; }::-webkit-scrollbar-thumb { border-radius: 16px; box-shadow: inset 0 0 10px 10px var(--border); border: solid 3px transparent; }::-webkit-scrollbar-thumb:hover { border-radius: 16px; box-shadow: inset 0 0 10px 10px var(--border); ; border: solid 3px transparent; } /* Utilities */.flex { display: flex; }.justify-content-center { justify-content: center; }.justify-content-space-between { justify-content: space-between; }.align-items-center { align-items: center; }.text-align-center { text-align: center; }.row-reverse { flex-direction: row-reverse; }.column { flex-direction: column; }.column-reverse { flex-direction: column-reverse; }.flex-grow { flex-grow: 1; }.width-100 { width: 100%; }.margin-0 { margin: 0; }.margin-1 { margin: .25rem; }.margin-2 { margin: .5rem; }.margin-3 { margin: .75rem; }.margin-4 { margin: 1rem; }.margin-5 { margin: 2rem; }.margin-top-1 { margin-top: .25rem; }.margin-top-2 { margin-top: .5rem; }.margin-top-3 { margin-top: .75rem; }.margin-top-4 { margin-top: 1rem; }.margin-top-5 { margin-top: 2rem; }.margin-bottom-1 { margin-bottom: .25rem; }.margin-bottom-2 { margin-bottom: .5rem; }.margin-bottom-3 { margin-bottom: .75rem; }.margin-bottom-4 { margin-bottom: 1rem; }.margin-bottom-5 { margin-bottom: 2rem; }.margin-left-1 { margin-left: .25rem; }.margin-left-2 { margin-left: .5rem; }.margin-left-3 { margin-left: .75rem; }.margin-left-4 { margin-left: 1rem; }.margin-left-5 { margin-left: 2rem; }.margin-right-1 { margin-right: .25rem; }.margin-right-2 { margin-right: .5rem; }.margin-right-3 { margin-right: .75rem; }.margin-right-4 { margin-right: 1rem; }.margin-right-5 { margin-right: 2rem; }.padding-0 { padding: 0; }.padding-1 { padding: .25rem; }.padding-2 { padding: .5rem; }.padding-3 { padding: .75rem; }.padding-4 { padding: 1rem; }.padding-5 { padding: 2rem; }.padding-top-1 { padding-top: .25rem; }.padding-top-2 { padding-top: .5rem; }.padding-top-3 { padding-top: .75rem; }.padding-top-4 { padding-top: 1rem; }.padding-top-5 { padding-top: 2rem; }.padding-bottom-1 { padding-bottom: .25rem; }.padding-bottom-2 { padding-bottom: .5rem; }.padding-bottom-3 { padding-bottom: .75rem; }.padding-bottom-4 { padding-bottom: 1rem; }.padding-bottom-5 { padding-bottom: 2rem; }.padding-left-1 { padding-left: .25rem; }.padding-left-2 { padding-left: .5rem; }.padding-left-3 { padding-left: .75rem; }.padding-left-4 { padding-left: 1rem; }.padding-left-5 { padding-left: 2rem; }.padding-right-1 { padding-right: .25rem; }.padding-right-2 { padding-right: .5rem; }.padding-right-3 { padding-right: .75rem; }.padding-right-4 { padding-right: 1rem; }.padding-right-5 { padding-right: 2rem; }.gap-1 { gap: .25rem; }.gap-2 { gap: .5rem; }.gap-3 { gap: .75rem; }.gap-4 { gap: 1rem; }.gap-5 { gap: 2rem; }.box { background-color: var(--gray-dark-1); border: 1px solid var(--border); } /* Animations */.scale-up { transition: 150ms; }.scale-up:hover { transition: 150ms; transform: scale(1.05); } /* Common */.avatar { border-radius: 100%; width: 96px; height: 96px; }.name { font-size: 18px; font-weight: 600; }.bio { font-size: 14px; }.link { padding: 15px; color: var(--text); } /* Blog Styling */ #post-wrapper { padding: 25px; color: var(--text); } #post-wrapper>hr { margin: 0; }.post-details { color: var(--text); font-size: 12px; }.post-title { color: var(--text-2); font-weight: 700; }.post-content { color: var(--text) } /* Dashboard */.togglebox { cursor: pointer; font-size: 16px; color: var(--text) }.togglebox::after { content: "\25BC"; } #link-manager-editor>a { cursor: move; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <header class="flex column"> <div class="flex align-items-center justify-content-space-between"> <h3 class="text-align-center">Dashboard</h3> <a href="#" class="scale-up"> <img src="../assets/images/logout.png" alt="logout-icon"> </a> </div> <hr> </header> <main> <section id="link-manager" class="box flex column margin-bottom-4"> <div class="togglebox flex justify-content-space-between padding-3"> <p>Gerenciamento de Links</p> </div> <div class=""> <hr class="margin-0"> <div id="link-manager-editor" class="flex column gap-3 padding-3"> <a href="#" class="link text-align-center box scale-up">Tutoriais de WordPress </a> <a href="#" class="link text-align-center box scale-up">O Meu Encurtador De Link (Decreaser) </a> <a href="#" class="link text-align-center box scale-up">Projeto De Hospedagem De Arquivos Open Source </a> <a href="#" class="link text-align-center box scale-up">sarain.ag (Site Que Fiz No WordPress) </a> <a href="#" class="link text-align-center box scale-up">espacoviverpsicologia.com (Site Que Fiz No WordPress)</a> </div> </div> </section> <section id="blog-manager" class="box flex column"> <div class="togglebox flex justify-content-space-between padding-3"> <p>Gerenciamento do Blog</p> </div> <div class="togglebox-body"> <hr class="margin-0"> <div class="flex column gap-3 padding-3"> <div class="flex column gap-3"> <form id="blog-search" class="flex gap-3"> <input type="text" class="flex-grow" placeholder="Procure por algum post..."> <button type="submit" class="scale-up">Buscar</button> </form> </div> <div class="flex column gap-3"> <a href="#" class="box scale-up"> <img src="../assets/images/blog-placeholder.jpg" alt="blog-post-featured-image" class="width-100"> <div class="flex column gap-2 padding-4"> <h4 class="post-title">O Decreaser v3 está finalmente pronto? Quais aprendizados eu tirei desse projeto,</h4> <div class="post-content"> <p>O Decreaser foi um projeto que criei no começo de 2020 bem no começo da pandemia. onde est...</p> </div> </div> </a> </div> </div> </div> </section> </main>

Here is the JSFiddle https://jsfiddle.net/joaopcos/hd0ufbeg/这是 JSFiddle https://jsfiddle.net/joaopcos/hd0ufbeg/

Your <div class="togglebox"> doesn't have children with class="togglebox-body" .您的<div class="togglebox">没有带有class="togglebox-body"孩子。 It should be .siblings() .它应该是.siblings() Yes, this also means that this inside your delegate handler doesn't point to <main> , it points to <div class="togglebox"> .是的,这也意味着您的委托处理程序中的this不指向<main> ,它指向<div class="togglebox">

Structure结构


<div class="togglebox">
   Heading
</div>

<div class="togglebox-body">
   Inner Content
</div>

<!- togglebox and togglebox-body are siblings here -!>

Updated Code:更新代码:

 $(".togglebox").click(function(){ const thisBox = $(this).siblings(".togglebox-body"); thisBox.toggle() })
 @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap'); /* Common */ html{ padding: 0; margin: 0; font-family: 'Poppins', sans-serif; --primary: #111; --gray-dark-1: #191919; --gray-dark--2: #161616; --gray-dark-3: #151515; --border: #222; --text: #555; --text-2: #969696; --white: #fff; } body{ background: var(--primary); color: var(--white); flex-grow: 1; margin: 32px auto; position: relative; width: auto; max-width: 540px; } a,p,span,h1,h2,h3,h4,h5{ margin: 0; font-weight: 400; text-decoration: none; } h1,h2,h3,h4,h5{ line-height: 1.2em; } hr{ width: 100%; border: 0; border-top: 1px solid var(--border); margin: 1.5rem 0; } hr{ width: 100%; border: 0; border-top: 1px solid var(--border); margin: 1.5rem 0; } input,textarea{ padding: 15px 10px; background-color: var(--gray-dark-3); border: 1px solid var(--border); color: var(--text); font-family: 'Poppins', sans-serif; font-size: 16px; } textarea:focus, input:focus{ outline: none; } button{ padding: 15px; background-color: var(--gray-dark-1); border: 1px solid var(--border); color: var(--text); font-family: 'Poppins', sans-serif; font-size: 16px; cursor: pointer; } footer{ font-size: 12px; color: var(--text) } footer a{ color: inherit; text-decoration: underline; }::-webkit-scrollbar { width: 12px; }::-webkit-scrollbar-track { background: transparent; }::-webkit-scrollbar-thumb { border-radius: 16px; box-shadow: inset 0 0 10px 10px var(--border); border: solid 3px transparent; }::-webkit-scrollbar-thumb:hover { border-radius: 16px; box-shadow: inset 0 0 10px 10px var(--border);; border: solid 3px transparent; } /* Utilities */.flex{ display: flex; }.justify-content-center{ justify-content: center; }.justify-content-space-between{ justify-content: space-between; }.align-items-center{ align-items: center; }.text-align-center{ text-align: center; }.row-reverse{ flex-direction: row-reverse; }.column{ flex-direction: column; }.column-reverse{ flex-direction: column-reverse; }.flex-grow{ flex-grow: 1; }.width-100{ width: 100%; }.margin-0{ margin: 0; }.margin-1{ margin: .25rem; }.margin-2{ margin: .5rem; }.margin-3{ margin: .75rem; }.margin-4{ margin: 1rem; }.margin-5{ margin: 2rem; }.margin-top-1{ margin-top: .25rem; }.margin-top-2{ margin-top: .5rem; }.margin-top-3{ margin-top: .75rem; }.margin-top-4{ margin-top: 1rem; }.margin-top-5{ margin-top: 2rem; }.margin-bottom-1{ margin-bottom: .25rem; }.margin-bottom-2{ margin-bottom: .5rem; }.margin-bottom-3{ margin-bottom: .75rem; }.margin-bottom-4{ margin-bottom: 1rem; }.margin-bottom-5{ margin-bottom: 2rem; }.margin-left-1{ margin-left: .25rem; }.margin-left-2{ margin-left: .5rem; }.margin-left-3{ margin-left: .75rem; }.margin-left-4{ margin-left: 1rem; }.margin-left-5{ margin-left: 2rem; }.margin-right-1{ margin-right: .25rem; }.margin-right-2{ margin-right: .5rem; }.margin-right-3{ margin-right: .75rem; }.margin-right-4{ margin-right: 1rem; }.margin-right-5{ margin-right: 2rem; }.padding-0{ padding: 0; }.padding-1{ padding: .25rem; }.padding-2{ padding: .5rem; }.padding-3{ padding: .75rem; }.padding-4{ padding: 1rem; }.padding-5{ padding: 2rem; }.padding-top-1{ padding-top: .25rem; }.padding-top-2{ padding-top: .5rem; }.padding-top-3{ padding-top: .75rem; }.padding-top-4{ padding-top: 1rem; }.padding-top-5{ padding-top: 2rem; }.padding-bottom-1{ padding-bottom: .25rem; }.padding-bottom-2{ padding-bottom: .5rem; }.padding-bottom-3{ padding-bottom: .75rem; }.padding-bottom-4{ padding-bottom: 1rem; }.padding-bottom-5{ padding-bottom: 2rem; }.padding-left-1{ padding-left: .25rem; }.padding-left-2{ padding-left: .5rem; }.padding-left-3{ padding-left: .75rem; }.padding-left-4{ padding-left: 1rem; }.padding-left-5{ padding-left: 2rem; }.padding-right-1{ padding-right: .25rem; }.padding-right-2{ padding-right: .5rem; }.padding-right-3{ padding-right: .75rem; }.padding-right-4{ padding-right: 1rem; }.padding-right-5{ padding-right: 2rem; }.gap-1{ gap: .25rem; }.gap-2{ gap: .5rem; }.gap-3{ gap: .75rem; }.gap-4{ gap: 1rem; }.gap-5{ gap: 2rem; }.box{ background-color: var(--gray-dark-1); border: 1px solid var(--border); } /* Animations */.scale-up{ transition: 150ms; }.scale-up:hover{ transition: 150ms; transform: scale(1.05); } /* Common */.avatar{ border-radius: 100%; width: 96px; height: 96px; }.name{ font-size: 18px; font-weight: 600; }.bio{ font-size: 14px; }.link{ padding: 15px; color: var(--text); } /* Blog Styling */ #post-wrapper{ padding: 25px; color: var(--text); } #post-wrapper>hr{ margin: 0; }.post-details{ color: var(--text); font-size: 12px; }.post-title{ color: var(--text-2); font-weight: 700; }.post-content{ color: var(--text) } /* Dashboard */.togglebox{ cursor: pointer; font-size: 16px; color: var(--text) }.togglebox::after{ content: "\25BC"; } #link-manager-editor>a{ cursor: move; }
 <,DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <title>joaopcos.xyz/admin/ — Dashboard</title> <link rel="stylesheet" href="../assets/css/style.css"> </head> <body> <header class="flex column"> <div class="flex align-items-center justify-content-space-between"> <h3 class="text-align-center">Dashboard</h3> <a href="#" class="scale-up"> <img src="../assets/images/logout.png" alt="logout-icon"> </a> </div> <hr> </header> <main> <section id="link-manager" class="box flex column margin-bottom-4"> <div class="togglebox flex justify-content-space-between padding-3"> <p>Gerenciamento de Links</p> </div> <div class="togglebox-body"> <hr class="margin-0"> <div id="link-manager-editor" class="flex column gap-3 padding-3"> <a href="#" class="link text-align-center box scale-up">Tutoriais de WordPress </a> <a href="#" class="link text-align-center box scale-up">O Meu Encurtador De Link (Decreaser) </a> <a href="#" class="link text-align-center box scale-up">Projeto De Hospedagem De Arquivos Open Source </a> <a href="#" class="link text-align-center box scale-up">sarain.ag (Site Que Fiz No WordPress) </a> <a href="#" class="link text-align-center box scale-up">espacoviverpsicologia.com (Site Que Fiz No WordPress)</a> </div> </div> </section> <section id="blog-manager" class="box flex column"> <div class="togglebox flex justify-content-space-between padding-3"> <p>Gerenciamento do Blog</p> </div> <div class="togglebox-body"> <hr class="margin-0"> <div class="flex column gap-3 padding-3"> <div class="flex column gap-3"> <form id="blog-search" class="flex gap-3"> <input type="text" class="flex-grow" placeholder="Procure por algum post..."> <button type="submit" class="scale-up">Buscar</button> </form> </div> <div class="flex column gap-3"> <a href="#" class="box scale-up"> <img src="../assets/images/blog-placeholder?jpg" alt="blog-post-featured-image" class="width-100"> <div class="flex column gap-2 padding-4"> <h4 class="post-title">O Decreaser v3 está finalmente pronto, Quais aprendizados eu tirei desse projeto.</h4> <div class="post-content"> <p>O Decreaser foi um projeto que criei no começo de 2020 bem no começo da pandemia. onde est.:.</p> </div> </div> </a> </div> </div> </div> </section> </main> <script src="https.//code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script> </body> </html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM