很抱歉,如果这是一个noob问题,但有没有办法将这些mouseenter / mouseleave事件合并?
$('.home').mouseenter(function(){
$('#display_home:hidden').fadeIn(400);
}).mouseleave(function(){
$('#display_home').hide()
});
$('.about').mouseenter(function(){
$('#display_about:hidden').fadeIn(400);
}).mouseleave(function(){
$('#display_about').hide();
});
$('.contact').mouseenter(function(){
$('#display_contact:hidden').fadeIn(400);
}).mouseleave(function(){
$('#display_contact').hide();
});
$('.services').mouseenter(function(){
$('#display_services:hidden').fadeIn(400);
}).mouseleave(function(){
$('#display_services').hide();
});
我已经尝试过各种程序员的各种方法。我试图通过将mouseenter
函数链接到每个div的li类来独立隐藏/显示多个div,但我是jQuery的新手,似乎无法找到解决方案。我知道必须有一个更清洁的方法,我还没有找到一个。任何帮助将不胜感激!
谢谢
HTML:
<div id="right_nav">
<div id='display_home'><img src="images/gallery/home.png" width="605" height="300" /></div>
<div id='display_about'><img src="images/gallery/about us.png" width="605" height="300" /></div>
<div id='display_contact'><img src="images/gallery/Contact Us.png" width="605" height="300" /></div>
<div id='display_services'><img src="images/gallery/Services.png" width="605" height="300" /></div>
</div>
<div id="thumb">
<ul>
<li class="home"><img src="images/gallery/thumb/home.png" width="82" height="23" /></li>
<li class="about"><img src="images/gallery/thumb/about us.png" width="130" height="24" /></li>
<li class="contact"><img src="images/gallery/thumb/Contact Us.png" width="150" height="23" /></li>
<li class="services"><img src="images/gallery/thumb/Services.png" width="113" height="24" /></li>
</ul>
</div>
答案 0 :(得分:3)
$('.home, .about, .contact, ,services').hover(function(){
$('#display_'+$(this).attr('class')+':hidden').fadeIn(400);
}, function() {
$('#display_'+$(this).attr('class')).hide()
});
修改
使用data属性而不是classname可能更好:
<ul>
<li class="home" data-name="home"><img src="images/gallery/thumb/home.png" width="82" height="23" /></li>
<li class="about" data-name="about"><img src="images/gallery/thumb/about us.png" width="130" height="24" /></li>
<li class="contact" data-name="contact"><img src="images/gallery/thumb/Contact Us.png" width="150" height="23" /></li>
<li class="services" data-name="services"><img src="images/gallery/thumb/Services.png" width="113" height="24" /></li>
</ul>
$('#thumb li').hover(function(){
$('#display_'+$(this).data('name')+':hidden').fadeIn(400);
}, function() {
$('#display_'+$(this).data('name')).stop().hide();
});
通过这种方式,您可以更改类或添加类而不会破坏它。
答案 1 :(得分:1)
$('div#thumb li').hover(function(){ // mouseover
var className = $(this).attr('class');
var divToShow = $('div#display_'+className);
divToShow.fadeIn(400);
},
function(){ // mouseout
// just hide all divs
$('div#right_nav div').stop().hide();
});
所以在这里,我假设lis的类名直接与你要隐藏/显示的div的id相关。
第一个函数(mouseover)因此得到你已经过去的li的类名,然后将它添加到前缀div#display_
以构建你想要显示的div的id,然后在那个元素中淡出。
mouseout函数只隐藏所有div。 stop()
会停止播放动画,如果它正在逐渐消失。
希望这有帮助。
答案 2 :(得分:1)
$('#thumb ul li').mouseenter(function(){
$('#right_nav div').eq($(this).index()).fadeIn(400);
}).mouseleave(function(){
$('#right_nav div').hide()
});
这是最简单的版本,假设内容的顺序相同,无需返回脚本并进行编辑。