Foros del Web » Programando para Internet » Jquery »

hacer loop (bucle) en slider con jquery

Estas en el tema de hacer loop (bucle) en slider con jquery en el foro de Jquery en Foros del Web. Hola: tengo el siguiente código en javascript de un slider con jquery: ;(function($){ $.fn.uCarousel=function(o){ var clock return this.each(function(){ var th=$(this) ,_=th.data('uCarousel')||{ axis:'x' ,show:3 ,step:1 ,rows:1 ...
  #1 (permalink)  
Antiguo 09/10/2013, 15:45
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
hacer loop (bucle) en slider con jquery

Hola:

tengo el siguiente código en javascript de un slider con jquery:


;(function($){
$.fn.uCarousel=function(o){
var clock
return this.each(function(){
var th=$(this)
,_=th.data('uCarousel')||{
axis:'x'
,show:3
,step:1
,rows:1
,curr:0
,shift:0
,itms:[]
,clickable:false
,retFalse:true
,pageStep:3
,duration:1000
,easing:'swing'
,activeClass:'active'
,buttonClass:'button'
,blockAtEnd:true
,fu:{
pre:function(){
_.axis=_.axis=='x'
_.ul=$('>ul',_.me)
_.ul=$('>ul',_.me)
.css({
position:'relative'
})
_.li=$('>li',_.ul)
.css({
display:'block'
,position:'absolute'
})
_.li
.each(function(n){
_.itms[n]=$(this)
})
.eq(_.pos=_.n=_.curr).addClass(_.activeClass)

_.liW=_.li.width()+parseInt(_.li.css('marginLeft') )+parseInt(_.li.css('marginRight'))
_.liH=_.li.height()+parseInt(_.li.css('marginTop') )+parseInt(_.li.css('marginLeft'))

_.ul
.css({
width:_.liW*Math.round(_.itms.length/_.rows)
,height:_.liH*_.rows
})

for(var i=n=j=0;i<_.itms.length/_.rows;i++)
for(j=0;j<_.rows;j++)
if(n>=_.itms.length)
break
else
_.itms[n++]
.css({
left:_.axis?i*_.liW:j*_.liW
,top:_.axis?j*_.liH:i*_.liH
})
if(_.me.css('position')=='static')
_.me.css({position:'relative'})
_.me
.css({
/*width:_.axis?_.show*_.liW:_.liW*_.rows*/
width:_.width
,height:_.axis?_.liH*_.rows:_.show*_.liH
,overflow:'hidden'
})
.states({
states:{
other:_.fu.change
}
})
//_.pageStep=_.pageStep||_.show
}
,calc:function(n){
n=n<_.itms.length
?n>=0
?n
:_.blockAtEnd?0:_.itms.length-1
:_.blockAtEnd?_.itms.length-1:0

_.pos=n

n=n-_.shift*_.rows>=0?n-_.shift*_.rows:0

if(n>_.itms.length-_.show*_.rows)
n=_.itms.length-_.show*_.rows

var pos={}
_.axis
?pos.left=-_.itms[n].prop('offsetLeft')
:pos.top=-_.itms[n].prop('offsetTop')

return pos
}
,change:function(n){
if(_.n==n)
return false

_.prev=_.n

_.pos=_.n=n<_.itms.length
?n>=0
?n
:_.blockAtEnd?0:_.itms.length-1
:_.blockAtEnd?_.itms.length-1:0

_.li
.removeClass(_.activeClass)
.eq(_.n)
.addClass(_.activeClass)

_.fu.move(_.fu.calc(n))
}
,move:function(pos){
_.ul
.stop()
.animate(pos,{
duration:_.duration
,easing:_.easing
})
}
,buttons:function(){
$('.'+_.buttonClass)
.each(function(){
var th=$(this)
,type=th.data('type')
th
.click(function(){
swtch(type,{
nextPage:function(){

_.fu.nextPage()
}
,prevPage:function(){

_.fu.prevPage()
}
,next:function(){
_.fu.next()
}
,prev:function(){
_.fu.prev()
}
,"default":function(){}
})()
return false
})
})
}
,nextPage:function(){
var n,tmp
n=_.pos+(_.pageStep||_.show)*_.rows
n=_.pageStep&&n>(tmp=_.itms.length-_.show*_.rows)?tmp:n
_.fu.move(_.fu.calc(n))
}
,prevPage:function(){
var n,tmp
n=_.pos-(_.pageStep||_.show)*_.rows
n=_.pageStep&&n<(tmp=_.show-_.show*_.rows)?tmp:n
_.fu.move(_.fu.calc(n))
}
,next:function(){
_.me.states(_.n+_.step)
}
,prev:function(){
_.me.states(_.n-_.step)
}
,clickable:function(){
_.clickable&&
_.li.each(function(n){
var th=$(this)
,a=$('a',th)
;(a.length?a:th)
.click(function(){
_.me.states(n)
if(_.retFalse)
return false
})
})
}
}
,init:function(){
_.me=th
.data({uCarousel:_})
_.fu.pre()
_.fu.buttons()
_.fu.clickable()

}
}
swtch(typeof o,{
object:function(){
$.extend(true,_,o)
}
,string:function(){
swtch(o,{
next:function(){
_.fu.next()
}
,prev:function(){
_.fu.prev()
}
,"default":function(){}
})()
}
,number:function(){
th.states(o)
}
,"function":function(){
_.me.on('_change',function(){
o(_.n,_)
})
}
,"default":function(){}
})()
_.me||_.init()
})
}
})(jQuery)

;(function($){
$.fn.states=function(o,cb){
return this.each(function(){
var th=$(this)
,_=th.data('states')||{
event:'_change'
,blockSame:true
,states:{}
,init:function(){
_.states['default']=_.states.other||function(){}
_.me=th
.data({states:_})
.bind(_.event,function(e,d){
if(d==_.prev&&_.blockSame)
return false
swtch(d,_.states)(d)
})
}
}
swtch(typeof o,{
object:function(){
$.extend(true,_,o)
}
,string:function(){
th.trigger(_.event,o)
}
,number:function(){
th.trigger(_.event,o)
}
,"default":function(){}
})()
_.me||_.init()
})
}
})(jQuery)

function swtch(arg,cases){
return (typeof arg=='string'||typeof arg=='number')
?cases[arg]
?cases[arg]
:cases['default']||arg
:typeof arg=='object'
?(function(){
var ret=arg instanceof Array?[]:{}
,i
if(arg.constructor===RegExp)
for(i in cases)
cases.hasOwnProperty(i)&&arg.test(i)&&(ret[i]=cases[i])
else
for(i in arg)
if(arg.hasOwnProperty(i))
ret[i]=swtch(arg[i],cases)
return ret
})()
:typeof arg=='function'
?swtch(arg(),cases)
:arg
}


Y el códgio html:

$('.carousel').uCarousel({show:5,pageStep:1,button Class:'car-button',width:836})

<div class="carousel">
<ul>
<li >
<div class="page1-box2">
<figure class="page1-img1"><img src="images/1.jpg" style="border: 0px;" /></figure>
</div>
</li>

<li >
<div class="page1-box2">
<figure class="page1-img1"><img src="images/2.jpg" style="border: 0px;" /></figure>
</div>
</li>

<li >
<div class="page1-box2">
<figure class="page1-img1"><img src="images/3.jpg" style="border: 0px;" /></figure>
</div>
</li>

<li >
<div class="page1-box2">
<figure class="page1-img1"><img src="images/4.jpg" style="border: 0px;" /></figure>
</div>
</li>

<li >
<div class="page1-box2">
<figure class="page1-img1"><img src="images/5.jpg" style="border: 0px;" /></figure>
</div>
</li>

</ul>
</div>
<a class="prev2 car-button2" data-type="prevPage"></a><a class="next2 car-button2" data-type="nextPage"></a>
</div>

Lo que estoy intentando hacer y no me sale es que el slider haga looping, es decir, un bucle: cuando llegue a la última imagen vuelva a automáticamente a la primera y siga el slider moviéndose.

¿me podéis echar una mano?

Gracias y Saludos.

Etiquetas: javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:03.