2013-02-20 56 views
0

我有一個報價旋轉設置,一次顯示兩個引號,並在各地之間跳躍時,它應該只是在每個之間平穩旋轉。 我無法弄清楚發生了什麼問題。看到它在行動這裏 - http://jsfiddle.net/RF3xK/1/jQuery報價旋轉使用slideUp和slideDown

代碼如下,

<div id="quotes"> 
<div class="textItem"> 
    testing the quotes testing the quotes 
</div> 
<div class="textItem"> 
    asdfdsaf sdf sdf sdf sf sd fsdaf sdf sdaf sdfsd f ds f dsf asdfsdafdsaf asdfdsaf sdf sdf sdf sf sd fsdaf sdf sdaf sdfsd f ds f dsf asdfsdafdsaf 
</div> 
<div class="textItem"> 
    and another one 
</div> 

和jQuery的

$(document).ready(function() { 
$('#quotes .textItem').hide(); 
InOut($('#quotes .textItem:first')); 

function InOut(elem) { 
elem.delay().slideUp(800).delay(0).slideDown(0, function() { 
    if (elem.next().length > 0) { 
     InOut($(this).next()); 
    } 
    else { 
     InOut($(this).siblings(':first')); 
    } 
}); 
} 

$('#quotes .textItem').mouseover(function() { 
$(this).stop(true, true); 
}); 
$('#quotes .textItem').mouseout(function() { 
if ($(this).is(":visible") == true) { 
    InOut($(this)); 
} 
}); 
}); 
+0

它似乎按照我的意圖工作..究竟是什麼問題? – 2013-02-20 00:43:22

+0

什麼是'elem.delay()。slideUp(800).delay(0).slideDown(0,'應該這樣做?向上滑動800ms,然後立即向下滑動? – Fresheyeball 2013-02-20 01:30:18

回答

1

我看不到的方式與方法來解決它,你寫了它,所以這裏是一個不同的方法:

http://jsfiddle.net/tFHWf/2/

var InOutInterval; 
$(document).ready(function() { 
    var textItems = $('.textItem'), 
     i = 0, 
     setInOut = function(){   
      clearInterval(InOutInterval); 
      InOutInterval = setInterval(function(){   
       textItems.eq(i%textItems.length).slideUp(); 
       textItems.eq((i+1)%textItems.length).slideDown(); 
       i++ 
      }, 800);   
     }, 
     pauseInOut = function(){ 
      clearInterval(InOutInterval); 
     }; 
    textItems.eq(0).show(); 
    setInOut();  
    $('#quotes').hover(pauseInOut,setInOut); 
}); 
+0

謝謝,效果很好。第一個顯示器沒有等待800毫秒出現? – user537137 2013-02-20 02:52:22

+0

答案更新。 – Fresheyeball 2013-02-20 05:24:10

+0

真棒,謝謝! – user537137 2013-02-20 06:16:48