用JQuery操作DOM确实很方便,并且JQuery提供了非常人性化的API应付我们的各种需求,其中选择器在此示例-“JQuery实现图片轮播效果”上体现的尤为出色。大大简化了js的代码。
这里大概说一下整个流程:
1,将除了第一张以外的图片全部隐藏,
2,获取第一张图片的alt信息显示在信息栏,并添加点击事件
3,为4个按钮添加点击侦听,点击相应的按钮,用fadeOut,fadeIn方法显示图片
4,设置setInterval,定时执行切换函数
调用
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
html部分
<div id="banner"> <div id="banner_bg"> </div> <!--标题背景--> <div id="banner_info"> </div> <!--标题--> <ul> <li class="on"> 1 </li> <li> 2 </li> <li> 3 </li> <li> 4 </li> </ul> <div id="banner_list"> <a href="#" target="_blank"><img src="imgs/p1.jpg" title="jquery插件库1" alt="jquery插件库1"></a> <a href="#" target="_blank"><img src="imgs/p2.jpg" title="jquery插件库2" alt="jquery插件库2"></a> <a href="#" target="_blank"><img src="imgs/p3.jpg" title="jquery插件库3" alt="jquery插件库3"></a> <a href="#" target="_blank"><img src="imgs/p1.jpg" title="jquery插件库4" alt="jquery插件库4"></a> </div> </div>
css部分
<style type="text/css"> #banner { position: relative; width: 478px; height: 286px; border: 1px solid #666; overflow: hidden; } #banner_list img { border: 0px; } #banner_bg { position: absolute; bottom: 0; background-color: #000; height: 30px; filter: Alpha(Opacity=30); opacity: 0.3; z-index: 1000; cursor: pointer; width: 478px; } #banner_info { position: absolute; bottom: 0; left: 5px; height: 22px; color: #fff; z-index: 1001; cursor: pointer } #banner_text { position: absolute; width: 120px; z-index: 1002; right: 3px; bottom: 3px; } #banner ul { position: absolute; list-style-type: none; filter: Alpha(Opacity=80); opacity: 0.8; z-index: 1002; margin: 0; padding: 0; bottom: 3px; right: 5px; } #banner ul li { padding: 0px 8px; float: left; display: block; color: #FFF; background: #6f4f67; cursor: pointer; border: 1px solid #333; } #banner ul li.on { background-color: #000; } #banner_list a { position: absolute; } <!-- 让四张图片都可以重叠在一起--> </style>
js部分
<script type="text/javascript"> var t = n = 0, count; $(document).ready(function() { count = $("#banner_list a").length; $("#banner_list a:not(:first-child)").hide(); $("#banner_info").html($("#banner_list a:first-child").find("img").attr('alt')); $("#banner_info").click(function() { window.open($("#banner_list a:first-child").attr('href'), "_blank") }); $("#banner li").click(function() { var i = $(this).text() - 1; //获取Li元素内的值,即1,2,3,4 n = i; if (i >= count) return; $("#banner_info").html($("#banner_list a").eq(i).find("img").attr('alt')); $("#banner_info").unbind().click(function() { window.open($("#banner_list a").eq(i).attr('href'), "_blank") }) $("#banner_list a").filter(":visible").fadeOut(500).parent().children().eq(i).fadeIn(1000); document.getElementById("banner").style.background = ""; $(this).toggleClass("on"); $(this).siblings().removeAttr("class"); }); t = setInterval("showAuto()", 4000); $("#banner").hover(function() { clearInterval(t) }, function() { t = setInterval("showAuto()", 4000); }); }) function showAuto() { n = n >= (count - 1) ? 0 : ++n; $("#banner li").eq(n).trigger('click'); } </script>
主要是没清动画,要是快速点击1,2,3,4,过一会儿就出现错乱了。。。
fadeOut和fadeIn加上
.stop(true,true,true)
就行了