简体   繁体   中英

Display div below clickable link

I have the following:

<a class="noteLink">Note Name</a>
<div class="note">Full Note Details</div>
<a class="noteLink">Note Name</a>
<div class="note">Full Note Details</div>
<a class="noteLink">Note Name</a>
<div class="note">Full Note Details</div>

Where all the "note" divs are hidden by default , I'd like to show the one that relates to the button that is clicked when it's clicked.

Is there an easier way than something like:

$('#UniqueNoteLink').click(function() {
    $('#UniqueNoteID').toggle();
});

For each note?

If the element you want to toggle comes right after the clicked element, you could just use next()

 $('.noteLink').click(function() { $(this).next().toggle(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> 

Yes, using classes.

 $(function () { $(".note").hide(); $(".noteLink").click(function () { $(this).next().slideToggle(); }); }); 
 a {cursor: pointer; display: block;} 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> 

.clickables{
    border:1px solid #999999;
}
.deepclickables{
    margin:5px;
    border:1px dotted #999999;
}

<div class="clickables">
    <span onClick="javascript:clickables()">Clickables</span>
    <div id="clicka" class="deepclickables">
    </div>
</div>
<script>
function clickables(){
    document.getElementById('clicka').innerHTML = "Yo yo yo"
}
</script>

or

function clickable(){
    document.getElementById('clickable').innerHTML = "content";
}
Use onClick to call it

<div id="click" onClick="javascript:clickable();">Click me!</div>

Using .next() would be the ideal solution. But if you are able to wrap your .note and .noteLink into a label tag with a checkbox, you may not need javescript to do this trick. Here is an example:

 input, .note { display: none; } label, input:checked ~ div { display:block; } 
 <label> <input type=checkbox> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> </label> <label> <input type=checkbox> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> </label> <label> <input type=checkbox> <a class="noteLink">Note Name</a> <div class="note">Full Note Details</div> </label> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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