Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Easyslider 1.7单击“下一步”按钮后的连续动画_Javascript_Jquery_Slider_Easyslider - Fatal编程技术网

Javascript 使用Easyslider 1.7单击“下一步”按钮后的连续动画

Javascript 使用Easyslider 1.7单击“下一步”按钮后的连续动画,javascript,jquery,slider,easyslider,Javascript,Jquery,Slider,Easyslider,曾经使用过此功能的人是否知道如何让幻灯片在单击“下一步”按钮后继续滚动?当前,如果您单击“下一步”按钮,它们将停留在该幻灯片上 我的jQuery技能略低于平均水平,我不知道是否有一种简单的方法可以做到这一点。任何帮助都是巨大的:) Easyslider是一个jQuery插件,下面是JS: (function($) { $.fn.easySlider = function(options){ // default configuration properties var def

曾经使用过此功能的人是否知道如何让幻灯片在单击“下一步”按钮后继续滚动?当前,如果您单击“下一步”按钮,它们将停留在该幻灯片上

我的jQuery技能略低于平均水平,我不知道是否有一种简单的方法可以做到这一点。任何帮助都是巨大的:)

Easyslider是一个jQuery插件,下面是JS:

(function($) {

$.fn.easySlider = function(options){

    // default configuration properties
    var defaults = {            
        prevId:         'prevBtn',
        prevText:       'Previous',
        nextId:         'nextBtn',  
        nextText:       'Next',
        controlsShow:   true,
        controlsBefore: '',
        controlsAfter:  '', 
        controlsFade:   true,
        firstId:        'firstBtn',
        firstText:      'First',
        firstShow:      false,
        lastId:         'lastBtn',  
        lastText:       'Last',
        lastShow:       false,              
        vertical:       false,
        speed:          800,
        auto:           true,
        pause:          3000,
        continuous:     true, 
        numeric:        false,
        numericId:      'controls'
    }; 

    var options = $.extend(defaults, options);  

    this.each(function() {  
        var obj = $(this);              
        var s = $("li", obj).length;
        var w = $("li", obj).width(); 
        //var h = $("li", obj).height(); 
        var clickable = true;
        obj.width(w); 
        //obj.height(h); 
        obj.css("overflow","hidden");
        var ts = s-1;
        var t = 0;
        $("ul", obj).css('width',s*w);          

        if(options.continuous){
            $("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px"));
            $("ul", obj).append($("ul li:nth-child(2)", obj).clone());
            $("ul", obj).css('width',(s+1)*w);
        };              

        if(!options.vertical) $("li", obj).css('float','left');

        if(options.controlsShow){
            var html = options.controlsBefore;              
            if(options.numeric){
                html += '<ol id="'+ options.numericId +'"></ol>';
            } else {
                if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
                html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
                html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
                if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';              
            };

            html += options.controlsAfter;                      
            $(obj).after(html);                                     
        };

        if(options.numeric){                                    
            for(var i=0;i<s;i++){                       
                $(document.createElement("li"))
                    .attr('id',options.numericId + (i+1))
                    .html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
                    .appendTo($("#"+ options.numericId))
                    .click(function(){                          
                        animate($("a",$(this)).attr('rel'),true);
                    });                                                 
            };                          
        } else {
            $("a","#"+options.nextId).click(function(){     
                animate("next",true);
            });
            $("a","#"+options.prevId).click(function(){     
                animate("prev",true);               
            }); 
            $("a","#"+options.firstId).click(function(){        
                animate("first",true);
            });             
            $("a","#"+options.lastId).click(function(){     
                animate("last",true);               
            });             
        };

        function setCurrent(i){
            i = parseInt(i)+1;
            $("li", "#" + options.numericId).removeClass("current");
            $("li#" + options.numericId + i).addClass("current");
        };

        function adjust(){
            if(t>ts) t=0;       
            if(t<0) t=ts;   
            if(!options.vertical) {
                $("ul",obj).css("margin-left",(t*w*-1));
            } else {
                $("ul",obj).css("margin-left",(t*h*-1));
            }
            clickable = true;
            if(options.numeric) setCurrent(t);
        };

        function animate(dir,clicked){
            if (clickable){
                clickable = false;
                var ot = t;             
                switch(dir){
                    case "next":
                        t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1;                       
                        break; 
                    case "prev":
                        t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1;
                        break; 
                    case "first":
                        t = 0;
                        break; 
                    case "last":
                        t = ts;
                        break; 
                    default:
                        t = dir;
                        break; 
                };  
                var diff = Math.abs(ot-t);
                var speed = diff*options.speed;                     
                if(!options.vertical) {
                    p = (t*w*-1);
                    $("ul",obj).animate(
                        { marginLeft: p }, 
                        { queue:false, duration:speed, complete:adjust }
                    );              
                } else {
                    p = (t*h*-1);
                    $("ul",obj).animate(
                        { marginTop: p }, 
                        { queue:false, duration:speed, complete:adjust }
                    );                  
                };

                if(!options.continuous && options.controlsFade){                    
                    if(t==ts){
                        $("a","#"+options.nextId).hide();
                        $("a","#"+options.lastId).hide();
                    } else {
                        $("a","#"+options.nextId).show();
                        $("a","#"+options.lastId).show();                   
                    };
                    if(t==0){
                        $("a","#"+options.prevId).hide();
                        $("a","#"+options.firstId).hide();
                    } else {
                        $("a","#"+options.prevId).show();
                        $("a","#"+options.firstId).show();
                    };                  
                };              

                if(clicked) clearTimeout(timeout);
                if(options.auto && dir=="next" && !clicked){;
                    timeout = setTimeout(function(){
                        animate("next",false);
                    },diff*options.speed+options.pause);
                };

            };

        };
        // init
        var timeout;
        if(options.auto){;
            timeout = setTimeout(function(){
                animate("next",false);
            },options.pause);
        };      

        if(options.numeric) setCurrent(0);

        if(!options.continuous && options.controlsFade){                    
            $("a","#"+options.prevId).hide();
            $("a","#"+options.firstId).hide();              
        };              

    });

};

})(jQuery);
(函数($){
$.fn.easySlider=函数(选项){
//默认配置属性
变量默认值={
prevId:'prevBtn',
prevText:“上一个”,
nextId:'nextBtn',
下一步:“下一步”,
控制显示:正确,
控件之前:“”,
controlsAfter:“”,
正面:对,
firstId:'firstBtn',
firstText:'第一',
第一秀:假,
lastId:'lastBtn',
lastText:'最后',
lastShow:false,
垂直:假,
速度:800,,
是的,
暂停:3000,
是的,
数字:false,
numericId:“控件”
}; 
var options=$.extend(默认值,选项);
此.each(function(){
var obj=$(本);
var s=$(“li”,obj)。长度;
var w=$(“li”,obj).width();
//var h=$(“li”,obj).height();
var clickable=true;
物体宽度(w);
//物体高度(h);
对象css(“溢出”、“隐藏”);
var ts=s-1;
var t=0;
$(“ul”,obj).css('宽度',s*w);
如果(选项。连续){
$(ul,obj).prepend($(ul-li:last-child,obj).clone().css(“左边距”,“-”+w+“px”);
$($ul,obj).append($($ul-li:nth-child(2)”,obj.clone());
$(“ul”,obj).css('width',(s+1)*w);
};              
如果(!options.vertical)$(“li”,obj.css('float','left');
if(选项.控件显示){
var html=options.controlsBefore;
如果(选项.数字){
html+='';
}否则{
如果(options.firstShow)html+='';
html+='';
html+='';
如果(options.lastShow)html+='';
};
html+=options.controlsAfter;
$(obj).after(html);
};
if(options.numeric){
对于(var i=0;its)t=0;
如果(t=ts)?(选项连续?t+1:ts):t+1;
打破
案例“prev”:

t=(t我通过修改easyslider1.7.js文件使其工作

第195行你有

if(options.auto && dir=="next" && !clicked){
    timeout = setTimeout(function(){
       animate("next",false);
    },diff*options.speed+options.pause);
};
我添加了一个else语句,如下所示

if(options.auto && dir=="next" && !clicked){
    timeout = setTimeout(function(){
        animate("next",false);
    },diff*options.speed+options.pause);
} else {
    if(clicked && options.auto && !options.numeric) {
        timeout = setTimeout(function(){
            animate("next",false);
        },diff*options.speed+options.pause);
    };
};

可能不是最优雅的解决方案(我不是javascript或jQuery专家),但它似乎有效,尽管只适用于左箭头和右箭头,而不适用于控件。

我来自Cameron的贡献,只是编辑了条件(删除!单击):


我有数控自动连续滑动的解决方案:

转到第107行并更改:

这:

animate($('a',$(this)).attr('rel'),true);
为此:

animate(parseInt($('a',$(this)).attr('rel')),true);
然后,在第202行添加以下内容:

}其他{
如果(单击&&options.auto&&options.numeric){
timeout=setTimeout(函数(){
动画(“下一步”,真);
},差异*选项。速度+选项。暂停);
};
};
这就解决了问题

干杯!

整个固定代码:

(function($) {

$.fn.easySlider = function(options){

    // default configuration properties
    var defaults = {            
        prevId:             'prevBtn',
        prevText:           'Previous',
        nextId:             'nextBtn',  
        nextText:           'Next',
        controlsShow:   true,
        controlsBefore: '',
        controlsAfter:  '', 
        controlsFade:       true,
        firstId:                'firstBtn',
        firstText:          'First',
        firstShow:          false,
        lastId:                 'lastBtn',  
        lastText:           'Last',
        lastShow:           false,              
        vertical:           false,
        speed:              800,
        auto:               false,
        pause:              2000,
        continuous:     false, 
        numeric:            false,
        numericId:      'controls'
    }; 

    var options = $.extend(defaults, options);  

    this.each(function() {  
        var obj = $(this);              
        var s = $("li", obj).length;
        var w = $("li", obj).width(); 
        var h = $("li", obj).height(); 
        var clickable = true;
        obj.width(w); 
        obj.height(h); 
        obj.css("overflow","hidden");
        var ts = s-1;
        var t = 0;
        $("ul", obj).css('width',s*w);          


        if(!options.vertical) $("li", obj).css({'float':'left','width':w});

        if(options.continuous){
            $("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px"));
            $("ul", obj).append($("ul li:nth-child(2)", obj).clone());
            $("ul", obj).css('width',(s+1)*w);
        };  


        if(options.controlsShow){
            var html = options.controlsBefore;              
            if(options.numeric){
                html += '<ol id="'+ options.numericId +'"></ol>';
            } else {
                if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
                html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
                html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
                if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';              
            };

            html += options.controlsAfter;                      
            $(obj).after(html);                                     
        };

        if(options.numeric){                                    
            for(var i=0;i<s;i++){                       
                $(document.createElement("li"))
                    .attr('id',options.numericId + (i+1))
                    .html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
                    .appendTo($("#"+ options.numericId))
                    .click(function(){                          
                        animate(parseInt($("a",$(this)).attr('rel')),true);
                    });                                                 
            };                          
        } else {
            $("a","#"+options.nextId).click(function(){     
                animate("next",true);
            });
            $("a","#"+options.prevId).click(function(){     
                animate("prev",true);               
            }); 
            $("a","#"+options.firstId).click(function(){        
                animate("first",true);
            });             
            $("a","#"+options.lastId).click(function(){     
                animate("last",true);               
            });             
        };

        function setCurrent(i){
            i = parseInt(i)+1;
            $("li", "#" + options.numericId).removeClass("current");
            $("li#" + options.numericId + i).addClass("current");
        };

        function adjust(){
            if(t>ts) t=0;       
            if(t<0) t=ts;   
            if(!options.vertical) {
                $("ul",obj).css("margin-left",(t*w*-1));
            } else {
                $("ul",obj).css("margin-left",(t*h*-1));
            }
            clickable = true;
            if(options.numeric) setCurrent(t);
        };

        function animate(dir,clicked){
            if (clickable){
                clickable = false;
                var ot = t;             
                switch(dir){
                    case "next":
                        t = (ot>=ts) ? (options.continuous ? (t+1) : ts) : (t+1);                       
                        break; 
                    case "prev":
                        t = (t<=0) ? (options.continuous ? (t-1) : 0) : (t-1);
                        break; 
                    case "first":
                        t = 0;
                        break; 
                    case "last":
                        t = ts;
                        break; 
                    default:
                        t = dir;
                        break; 
                };  
                var diff = Math.abs(ot-t);
                var speed = diff*options.speed;                     
                if(!options.vertical) {
                    p = (t*w*-1);
                    $("ul",obj).animate(
                        { marginLeft: p }, 
                        { queue:false, duration:speed, complete:adjust }
                    );              
                } else {
                    p = (t*h*-1);
                    $("ul",obj).animate(
                        { marginTop: p }, 
                        { queue:false, duration:speed, complete:adjust }
                    );                  
                };

                if(!options.continuous && options.controlsFade){                    
                    if(t==ts){
                        $("a","#"+options.nextId).hide();
                        $("a","#"+options.lastId).hide();
                    } else {
                        $("a","#"+options.nextId).show();
                        $("a","#"+options.lastId).show();                   
                    };
                    if(t==0){
                        $("a","#"+options.prevId).hide();
                        $("a","#"+options.firstId).hide();
                    } else {
                        $("a","#"+options.prevId).show();
                        $("a","#"+options.firstId).show();
                    };                  
                };              

                if(clicked) clearTimeout(timeout);
                if(options.auto && dir=="next" && !clicked){;
                    timeout = setTimeout(function(){
                        animate("next",false);
                    },diff*options.speed+options.pause);
                } else {
                    if(clicked && options.auto && !options.numeric) {
                        timeout = setTimeout(function(){
                            animate("next",false);
                        },diff*options.speed+options.pause);
                    };

                    if(clicked && options.auto && options.numeric) {
                        timeout = setTimeout(function(){
                            animate("next",true);
                        },diff*options.speed+options.pause);
                    };
                };

            };

        };
        // init
        var timeout;
        if(options.auto){;
            timeout = setTimeout(function(){
                animate("next",false);
            },options.pause);
        };      

        if(options.numeric) setCurrent(0);

        if(!options.continuous && options.controlsFade){                    
            $("a","#"+options.prevId).hide();
            $("a","#"+options.firstId).hide();              
        };

    });

};
})(jQuery);
(函数($){
$.fn.easySlider=函数(选项){
//默认配置属性
变量默认值={
prevId:'prevBtn',
prevText:“上一个”,
nextId:'nextBtn',
下一步:“下一步”,
控制显示:正确,
控件之前:“”,
controlsAfter:“”,
正面:对,
firstId:'firstBtn',
firstText:'第一',
第一秀:假,
lastId:'lastBtn',
lastText:'最后',
lastShow:false,
垂直:假,
速度:800,,
汽车:错,
暂停:2000年,
连续:假,
数字:false,
numericId:“控件”
}; 
var options=$.extend(默认值,选项);
此.each(function(){
var obj=$(本);
var s=$(“li”,obj)。长度;
var w=$(“li”,obj).width();
var h=$(“li”,obj).height();
var clickable=true;
物体宽度(w);
物体高度(h);
对象css(“溢出”、“隐藏”);
var ts=s-1;
var t=0;
$(“ul”,obj).css('宽度',s*w);
if(!options.vertical)$(“li”,obj).css({'float':'left','width':w});
如果(选项。连续){
$(ul,obj).prepend($(ul-li:last-child,obj).clone().css(“左边距”,“-”+w+“px”);
$($ul,obj).append($($ul-li:nth-child(2)”,obj.clone());
$(“ul”,obj).css('width',(s+1)*w);
};  
if(选项.控件显示){
var html=options.controlsBefore;
如果(选项.数字){
html+='';
}否则{
如果(options.firstShow)html+='';
html+='';
html+='';
如果(options.lastShow)html+='';
};
html+=options.controlsAfter;
(function($) {

$.fn.easySlider = function(options){

    // default configuration properties
    var defaults = {            
        prevId:             'prevBtn',
        prevText:           'Previous',
        nextId:             'nextBtn',  
        nextText:           'Next',
        controlsShow:   true,
        controlsBefore: '',
        controlsAfter:  '', 
        controlsFade:       true,
        firstId:                'firstBtn',
        firstText:          'First',
        firstShow:          false,
        lastId:                 'lastBtn',  
        lastText:           'Last',
        lastShow:           false,              
        vertical:           false,
        speed:              800,
        auto:               false,
        pause:              2000,
        continuous:     false, 
        numeric:            false,
        numericId:      'controls'
    }; 

    var options = $.extend(defaults, options);  

    this.each(function() {  
        var obj = $(this);              
        var s = $("li", obj).length;
        var w = $("li", obj).width(); 
        var h = $("li", obj).height(); 
        var clickable = true;
        obj.width(w); 
        obj.height(h); 
        obj.css("overflow","hidden");
        var ts = s-1;
        var t = 0;
        $("ul", obj).css('width',s*w);          


        if(!options.vertical) $("li", obj).css({'float':'left','width':w});

        if(options.continuous){
            $("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px"));
            $("ul", obj).append($("ul li:nth-child(2)", obj).clone());
            $("ul", obj).css('width',(s+1)*w);
        };  


        if(options.controlsShow){
            var html = options.controlsBefore;              
            if(options.numeric){
                html += '<ol id="'+ options.numericId +'"></ol>';
            } else {
                if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
                html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
                html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
                if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';              
            };

            html += options.controlsAfter;                      
            $(obj).after(html);                                     
        };

        if(options.numeric){                                    
            for(var i=0;i<s;i++){                       
                $(document.createElement("li"))
                    .attr('id',options.numericId + (i+1))
                    .html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
                    .appendTo($("#"+ options.numericId))
                    .click(function(){                          
                        animate(parseInt($("a",$(this)).attr('rel')),true);
                    });                                                 
            };                          
        } else {
            $("a","#"+options.nextId).click(function(){     
                animate("next",true);
            });
            $("a","#"+options.prevId).click(function(){     
                animate("prev",true);               
            }); 
            $("a","#"+options.firstId).click(function(){        
                animate("first",true);
            });             
            $("a","#"+options.lastId).click(function(){     
                animate("last",true);               
            });             
        };

        function setCurrent(i){
            i = parseInt(i)+1;
            $("li", "#" + options.numericId).removeClass("current");
            $("li#" + options.numericId + i).addClass("current");
        };

        function adjust(){
            if(t>ts) t=0;       
            if(t<0) t=ts;   
            if(!options.vertical) {
                $("ul",obj).css("margin-left",(t*w*-1));
            } else {
                $("ul",obj).css("margin-left",(t*h*-1));
            }
            clickable = true;
            if(options.numeric) setCurrent(t);
        };

        function animate(dir,clicked){
            if (clickable){
                clickable = false;
                var ot = t;             
                switch(dir){
                    case "next":
                        t = (ot>=ts) ? (options.continuous ? (t+1) : ts) : (t+1);                       
                        break; 
                    case "prev":
                        t = (t<=0) ? (options.continuous ? (t-1) : 0) : (t-1);
                        break; 
                    case "first":
                        t = 0;
                        break; 
                    case "last":
                        t = ts;
                        break; 
                    default:
                        t = dir;
                        break; 
                };  
                var diff = Math.abs(ot-t);
                var speed = diff*options.speed;                     
                if(!options.vertical) {
                    p = (t*w*-1);
                    $("ul",obj).animate(
                        { marginLeft: p }, 
                        { queue:false, duration:speed, complete:adjust }
                    );              
                } else {
                    p = (t*h*-1);
                    $("ul",obj).animate(
                        { marginTop: p }, 
                        { queue:false, duration:speed, complete:adjust }
                    );                  
                };

                if(!options.continuous && options.controlsFade){                    
                    if(t==ts){
                        $("a","#"+options.nextId).hide();
                        $("a","#"+options.lastId).hide();
                    } else {
                        $("a","#"+options.nextId).show();
                        $("a","#"+options.lastId).show();                   
                    };
                    if(t==0){
                        $("a","#"+options.prevId).hide();
                        $("a","#"+options.firstId).hide();
                    } else {
                        $("a","#"+options.prevId).show();
                        $("a","#"+options.firstId).show();
                    };                  
                };              

                if(clicked) clearTimeout(timeout);
                if(options.auto && dir=="next" && !clicked){;
                    timeout = setTimeout(function(){
                        animate("next",false);
                    },diff*options.speed+options.pause);
                } else {
                    if(clicked && options.auto && !options.numeric) {
                        timeout = setTimeout(function(){
                            animate("next",false);
                        },diff*options.speed+options.pause);
                    };

                    if(clicked && options.auto && options.numeric) {
                        timeout = setTimeout(function(){
                            animate("next",true);
                        },diff*options.speed+options.pause);
                    };
                };

            };

        };
        // init
        var timeout;
        if(options.auto){;
            timeout = setTimeout(function(){
                animate("next",false);
            },options.pause);
        };      

        if(options.numeric) setCurrent(0);

        if(!options.continuous && options.controlsFade){                    
            $("a","#"+options.prevId).hide();
            $("a","#"+options.firstId).hide();              
        };

    });

};
})(jQuery);