Reputation: 151
I forked this script from jsfiddle for a contact page I'm making. Problem is: I can't figure out how to show nested divs, which is required for a shortcode I will be using.
In my example, I created an ID called 'I need to be seen!' that I would like to see popup when the user clicks a face -- JSFiddle
Here is the jQuery script I'm using:
$(document).ready(function(){
$("#upload_page a").click(function(){
var id = $(this).attr('id');
id = id.split('_');
$(this).addClass('selected').siblings().removeClass('selected');
$("#upload_container div").hide();
$("#upload_container #upload_"+id[1]).show();
});
});
Thanks!
Upvotes: 0
Views: 1060
Reputation: 388436
The problem is the selector #upload_container div
applies the style and actions to all divs inside upload_container
instead you need to limit it to the children of upload_container
So
#upload_container > div {
display:none;
}
then
$(document).ready(function () {
$("#upload_page a").click(function () {
var id = $(this).attr('id');
id = id.split('_');
$(this).addClass('selected').siblings().removeClass('selected');
$("#upload_container > div").hide();
$("#upload_container #upload_" + id[1]).show();
});
});
Demo: Fiddle
Another solution is to add a class to target the the upload_*
elements like
<div id="upload_bob9" class="upload"> Some Text 9
<div class="nested_div">I need to be seen!</div>
</div>
then
#upload_container .upload {
display:none;
}
and
$(document).ready(function () {
$("#upload_page a").click(function () {
var id = $(this).attr('id');
id = id.split('_');
$(this).addClass('selected').siblings().removeClass('selected');
$("#upload_container .upload").hide();
$("#upload_container #upload_" + id[1]).show();
});
});
Demo: Fiddle
Note: ID of an element must be unique so use class attribute for nested_div
Upvotes: 2
Reputation: 3385
Add this line $("#upload_container #upload_"+id[1]).find('div').show();
in your code
$(document).ready(function(){
$("#upload_page a").click(function(){
var id = $(this).attr('id');
id = id.split('_');
$(this).addClass('selected').siblings().removeClass('selected');
$("#upload_container div").hide();
$("#upload_container #upload_"+id[1]).show();
$("#upload_container #upload_"+id[1]).find('div').show();
});
});
FIDDLE Hope it helps.
Upvotes: 0
Reputation: 15709
Write:
$("#upload_page a").click(function(){
var id = $(this).attr('id');
id = id.split('_');
$(this).addClass('selected').siblings().removeClass('selected');
$("#upload_container div").hide();
$("#upload_container #upload_"+id[1]+",#upload_container #upload_"+id[1]+" *").show();
});
OR:
Add a class to all upload divs and hide them instead of hiding all div elements.
$("#upload_page a").click(function(){
var id = $(this).attr('id');
id = id.split('_');
$(this).addClass('selected').siblings().removeClass('selected');
$("#upload_container .container").hide();
$("#upload_container #upload_"+id[1]).show();
});
Upvotes: 0