Reputation: 43
I have an ordered list of links that I want to display it's content underneath it when clicked, and then collapse when other links are clicked. This is what I have done so far. There are abnormalities in the display. jsfiddle
<html>
<head>
<title>Jquery Change content of Div</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
jQuery(document).ready(function(){
var $j = jQuery;
$j('.biocontent div:not(:first-child)').hide();
$j('.services li a').click(function(){
var showclass = $j(this).attr('class');
$j('.biocontent div').fadeOut('fast',function(){
$j('.biocontent div.' + showclass).show();
});
});
});
</script>
</head>
<body>
<ul class="services">
<li><a class="div1" href="#"><h2>Div 1</h2></a></li>
<div class="biocontent ">
<div class="div1">
<p>Content1</p>
</div>
</div>
<li><a class="div2" href="#"><h2>Div 2</h2></a></li>
<div class="biocontent ">
<div class="div2">
<p>Content 2</p>
</div>
</div>
<li><a class="div3" href="#"><h2>Div 3</h2></a></li>
<div class="biocontent ">
<div class="div3">
<p>Content 3</p>
</div>
</div>
<li><a class="div4" href="#"><h2>Div 4</h2></a></li>
<div class="biocontent ">
<div class="div4">
<p>Content 4</p>
</div>
</div>
<li><a class="div5" href="#"><h2>Div 5</h2></a></li>
<div class="biocontent>
<div class="div5">
Content 5
</div>
</div>
</body>
</html>
Upvotes: 0
Views: 444
Reputation:
This is the solution:
<html>
<head>
<title>Jquery Change content of Div</title>
<style>
.servicescontent div{
display:none;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
jQuery(document).ready(function(){
var $j = jQuery;
//services page
$j('.services li a').click(function(){
var showid= $j(this).attr('class');
$j('.servicescontent div').hide();
$('#'+showid).toggle('fast');
});
});
</script>
</head>
<body>
<ul class="services">
<li><a class="div1" href="#"><h2>Div 1</h2></a></li>
<div class="servicescontent">
<div id="div1" class="cont">
<p>Content1</p>
</div>
</div>
<li><a class="div2" href="#"><h2>Div 2</h2></a></li>
<div class="servicescontent">
<div id="div2" class="cont">
<p>Content 2</p>
</div>
</div>
<li><a class="div3" href="#"><h2>Div 3</h2></a></li>
<div class="servicescontent">
<div id="div3" class="cont">
<p>Content 3</p>
</div>
</div>
<li><a class="div4" href="#"><h2>Div 4</h2></a></li>
<div class="servicescontent">
<div id="div4" class="cont">
<p>Content 4</p>
</div>
</div>
<li><a class="div5" href="#"><h2>Div 5</h2></a></li>
<div class="servicescontent">
<div id="div5" class="cont">
Content 5
</div>
</div>
</body>
</html>
Upvotes: 2
Reputation: 34426
Your HTML was messed up, so I removed an extra div.servicescontent and rewrote the function to toggle the content - http://jsfiddle.net/CCa7K/2/
$('a').click(function() {
$(this).parent().next('.servicescontent').toggle();
});
Upvotes: 1