【www.gdgbn.com--jquery】

jquery淡入淡出可自动切换的幻灯插件
1. 用户快速划过按钮时不触发鼠标事件;
2. 鼠标划入当前图片按钮时不闪烁;
3. 简化并优化代码.
使用方法就不详述了, 请参见源码及相关注释
$.fn.ifadeslide = function(iset){
 /*
  * iset可选参数说明:
  * iset.field==>幻灯区域内的图片集
  * iset.ico==>按钮钩子
  * iset.high==>按钮高亮样式
  * iset.interval==>图片切换时间
  * iset.leavetime==>不触发鼠标划入事件的最大时间值
  * iset.fadeintime==>淡入时间
  * iset.fadeouttime==>淡出时间
  * 调用方式$(document).ifadeslide({field:"...",ico:"...",...})
  */
    iset = $.extend({high:"high",interval:3000,leavetime:150,fadeouttime:400,fadeintime:400},iset);
    var imgfield = $(iset.field || "#slide>img");
    var icofield = $(iset.ico || "#ico");
 var curindex = 0;
    var slideinterval = iset.interval || 3000;
    var hovertime = iset.leavetime || 150;
    var fadeouttime = iset.fadeouttime || 400;
    var fadeintime = iset.fadeintime || 400;
    var icos=null, fasthoverfun = null, autoslidefun = null, hasicohighcls = null, changefun = null,max=null;;
    var icohtml = "";
 max=imgfield.size();
 //按图片传入对应的按钮
    imgfield.each(function(i){
        icohtml += "" + (i + 1) + "";
    });
    icohtml += "";
    icofield.append(icohtml);
 //淡入淡出函数
    changefun = function(n){
        imgfield.filter(":visible").fadeout(fadeouttime, function(){
            imgfield.eq(n).fadein(fadeintime)
            icos.eq(n).addclass(iset.high).siblings().removeclass(iset.high);
        });
    }
    icos = icofield.find("ul>li");
 //为第一个按键初始化高亮
    icos.first().addclass(iset.high);
 //按钮鼠标划入划出事件
    icos.hover(function(){
        clearinterval(autoslidefun);
        curindex = icos.index(this);
        hasicohighname = $(this).hasclass(iset.high);
  //settimeout避免用户快速(无意识性划过)划过时触发事件
        fasthoverfun = settimeout(function(){
   //鼠标划入当前图片按钮时不闪烁
            if (!hasicohighname) {
                changefun(curindex);
            }
        }, hovertime);
    }, function(){
        cleartimeout(fasthoverfun);
  //自动切换
        autoslidefun = setinterval(function(){
            curindex++;
            changefun(curindex);
            if (curindex ==max ) {
    changefun(0);
                curindex = 0;
            }
        }, slideinterval)
    }).eq(0).trigger("mouseleave");

    //当鼠标划入图片区域时停止切换
    imgfield.hover(function(){
        curindex = imgfield.index(this);
        clearinterval(autoslidefun);
    }, function(){
        icos.eq(curindex).trigger("mouseleave");
    });
}

实例完整代码

jquery代码

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
/*******************************
 * @基于jquery淡入淡出可自动切换的幻灯插件
 * @jquery vesion:1.4.2
 * @plugin page:http://mrthink.net/jq-plugin-ifadeslide/
 * @author mr.think
 * @author blog http://mrthink.net/
 * @creation date: 2011.01.11
 *******************************/
$.fn.ifadeslide = function(iset){
 /*
  * iset可选参数说明:
  * iset.field==>幻灯区域内的图片集
  * iset.ico==>按钮钩子
  * iset.high==>按钮高亮样式
  * iset.interval==>图片切换时间
  * iset.leavetime==>不触发鼠标划入事件的最大时间值
  * iset.fadeintime==>淡入时间
  * iset.fadeouttime==>淡出时间
  * 调用方式$(document).ifadeslide({field:"...",ico:"...",...})
  */
    iset = $.extend({high:"high",interval:3000,leavetime:150,fadeouttime:400,fadeintime:400},iset);
    var imgfield = $(iset.field || "#slide>img");
    var icofield = $(iset.ico || "#ico");
 var curindex = 0;
    var slideinterval = iset.interval || 3000;
    var hovertime = iset.leavetime || 150;
    var fadeouttime = iset.fadeouttime || 400;
    var fadeintime = iset.fadeintime || 400;
    var icos=null, fasthoverfun = null, autoslidefun = null, hasicohighcls = null, changefun = null,max=null;;
    var icohtml = "";
 max=imgfield.size();
 //按图片传入对应的按钮
    imgfield.each(function(i){
        icohtml += "" + (i + 1) + "";
    });
    icohtml += "";
    icofield.append(icohtml);
 //淡入淡出函数
    changefun = function(n){
        imgfield.filter(":visible").fadeout(fadeouttime, function(){
            imgfield.eq(n).fadein(fadeintime)
            icos.eq(n).addclass(iset.high).siblings().removeclass(iset.high);
        });
    }
    icos = icofield.find("ul>li");
 //为第一个按键初始化高亮
    icos.first().addclass(iset.high);
 //按钮鼠标划入划出事件
    icos.hover(function(){
        clearinterval(autoslidefun);
        curindex = icos.index(this);
        hasicohighname = $(this).hasclass(iset.high);
  //settimeout避免用户快速(无意识性划过)划过时触发事件
        fasthoverfun = settimeout(function(){
   //鼠标划入当前图片按钮时不闪烁
            if (!hasicohighname) {
                changefun(curindex);
            }
        }, hovertime);
    }, function(){
        cleartimeout(fasthoverfun);
  //自动切换
        autoslidefun = setinterval(function(){
            curindex++;
            changefun(curindex);
            if (curindex ==max ) {
    changefun(0);
                curindex = 0;
            }
        }, slideinterval)
    }).eq(0).trigger("mouseleave");
 
    //当鼠标划入图片区域时停止切换
    imgfield.hover(function(){
        curindex = imgfield.index(this);
        clearinterval(autoslidefun);
    }, function(){
        icos.eq(curindex).trigger("mouseleave");
    });
}

$(function(){
 //sample-a
 $(document).ifadeslide();
 
 //sample-b
 $(document).ifadeslide({
  field: $("div#slide_b a"),
  ico:$("div.ico_b"),
        high: "high_b",
        interval: 2000
 });
 
 //sample-c
 $(document).ifadeslide({
  field: $("div#slide_c img"),
  ico: $("div.ico_c"),
  fadeouttime:100,
  fadeintime: 200
 });
});
</script>

html代码





            demo
            demo
            demo
           




            demo
            demo
            demo
            demo
           





            demo
            demo
            demo
    demo
            demo
           


本文来源:http://www.gdgbn.com/wangyezhizuo/29629/