I want to hide all child elements in a div. And then show a specific one passed on to the function.
function subDisplay(name) {
$(\"#navSub\").each(functi
You need to hide the children and not the containing div.
$("#navSub").children().hide();
So now if the div you are trying to show is an element in the parent div it will still show while the others stay hidden.
function subDisplay(name) {
$("#navSub").hide();
$('#'+name).show();
}
If you want to hide child div using class.
<div class="parent_div">
<div class="child_div">1st div</div>
<div class="child_div">2nd div</div>
</div>
$(document).ready(function(){
$(".parent_div").on('click',function(){
$j(this).find("div").toggle();
})
})
To summarize the great comments from @dotweb and @Matt;
function subDisplay(name) {
$('#navSub').hide();
$(name).show();
}
subDisplay('#DivIwantToShow');
Try having it outside of the loop, like so:
function subDisplay(name) {
$("#navSub").hide();
$(name).show();
}
http://jsfiddle.net/peduarte/m2pj8/
If you're targeting the children of #navSub
, you need target them and hide them, rather than the element navSub
; which you can do using the children() method;
function subDisplay(name) {
$('#navSub').children().hide();
$(name).show();
};
Otherwise, it appears you have multiple elements with the same ID in your DOM, which is not allowed.
You then need to pass a string (which is a valid jQuery selector) to subDisplay()
;
subDisplay('#DivIwantToShow');