Javascript 使用Easyslider 1.7单击“下一步”按钮后的连续动画
曾经使用过此功能的人是否知道如何让幻灯片在单击“下一步”按钮后继续滚动?当前,如果您单击“下一步”按钮,它们将停留在该幻灯片上 我的jQuery技能略低于平均水平,我不知道是否有一种简单的方法可以做到这一点。任何帮助都是巨大的:) Easyslider是一个jQuery插件,下面是JS: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
(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);