Reputation: 167
I have a test UL list that goes like this:
<ul>
<li id="firstdiv">First div</li>
<li id="seconddiv">Second div</li>
<li id="thirddiv">Third div</li>
....
</ul>
And, bellow that i have related div's, aka:
<div id="firstdiv">Content Here</div>
<div id="seconddiv">Content Here</div>
<div id="thirddiv">Content Here</div>
I was wondering how could i make each div only shows when its LI item is hovered, maybe with some fadein effect. I tried with some other answers from here, but no luck :\
Upvotes: 1
Views: 21712
Reputation: 1393
Try this.
html code
<ul>
<li id="firstli">First div</li>
<li id="secondli">Second div</li>
<li id="thirdli">Third div</li>
</ul>
<div id="firstdiv">Content Here</div>
<div id="seconddiv">Content Here</div>
<div id="thirddiv">Content Here</div>
javascript.
$(document).ready(function(){
$("#firstdiv").hide();
$("#seconddiv").hide();
$("#thirddiv").hide();
$("#firstli").hover(function(){
$("#firstdiv").show();
});
$("#secondli").hover(function(){
$("#seconddiv").show();
});
$("#thirdli").hover(function(){
$("#thirddiv").show();
});
});
see output: fiddle demo
Upvotes: 1
Reputation: 2403
Please see this fiddle.
Also keep ID's unique.
Here's some code from the fiddle:
$(document).ready(function() {
$('ul>li').hover(function(){
$('#d'+$(this).prop('id')).show();
}, function() {
$('#d'+$(this).prop('id')).hide();
});
});
Upvotes: 3
Reputation: 5396
This is your answer
<html>
<head>
<style>
.hidden_div{
display: none;
position: absolute;
}
</style>
<script src="script/jquery-1.10.2.js"></script>
<script>
$(document).ready(function(){
$("li").mouseover(function(){
var id=$(this).attr('id');
$('.hidden_div').fadeOut();
$("."+id).fadeIn();
})
});
</script>
</head>
<body>
<ul>
<li id="firstdiv">First div</li>
<li id="seconddiv">Second div</li>
<li id="thirddiv">Third div</li>
</ul>
<div class="firstdiv hidden_div">Content 1</div>
<div class="seconddiv hidden_div">Content 2</div>
<div class="thirddiv hidden_div">Content 3</div>
</body>
</html>
just change the location of your script
Upvotes: 0
Reputation: 25527
You should give unique id's to elements
<ul>
<li id="firstdiv">First div</li>
<li id="seconddiv">Second div</li>
<li id="thirddiv">Third div</li>
</ul>
<div class="myclass" id="firstdiv1">Content1 Here</div>
<div class="myclass" id="seconddiv1">Content2 Here</div>
<div class="myclass" id="thirddiv1">Content3 Here</div>
$(".myclass").hide();
$("ul li").hover(function(){
$(".myclass").hide();
$("#"+this.id+1).show();
});
Upvotes: 0
Reputation: 38102
Chang your id to class
<ul>
<li class="firstdiv">First div</li>
<li class="seconddiv">Second div</li>
<li class="thirddiv">Third div</li>
</ul>
<div class="firstdiv">Content 1 Here</div>
<div class="seconddiv">Content 2 Here</div>
<div class="thirddiv">Content 3 Here</div>
then you can use:
$('ul li').hover(function() {
var cls = $(this).attr('class');
$('div.'+cls).toggle();
})
Upvotes: 1
Reputation: 36784
As I've mentioned, it is important that your id
s are unique. So you need to find another way to reference your <div>
s. May I suggest using data-*
attributes:
HTML
<ul>
<li data-id="firstdiv">First div</li>
<li data-id="seconddiv">Second div</li>
<li data-id="thirddiv">Third div</li>
</ul>
Then your jQuery could look something like the following:
$('ul li').on({
'mouseenter':function(){
$('#'+$(this).data('id')).fadeIn();
},'mouseleave':function(){
$('#'+$(this).data('id')).fadeOut();
}
});
Upvotes: 4