2012-11-29 175 views
2

我的延遲功能在我的jquery旋轉功能中不起作用。我不知道爲什麼。jquery延遲功能

基本上,我的代碼會讓我的div轉角,它會停在某個角度。這在目前是有效的。不過,我添加了延遲,所以它會在3或4秒後工作。

但它沒有這樣做。

$(window).load(function() { 
    var $elie = $("#super"); 
    rotate(1); 

    function rotate(degree) { 
     $elie.css({ 
      '-webkit-transform': 'rotate(' + degree + 'deg)', 
      '-moz-transform': 'rotate(' + degree + 'deg)', 
      '-o-transform': 'rotate(' + degree + 'deg)', 
      '-ms-transform': 'rotate(' + degree + 'deg)', 
      'transform': 'rotate(' + degree + 'deg)' 
     }); 
     console.log(degree); 
     if (degree < 55) { 
      timer = setTimeout(function() { 
       rotate(++degree) 
      }, 10) 
      delay: 4000; 
     } 
    } 
});​ 
+0

您知道您不需要所有特定於瀏覽器的屬性?只是'變換',如果你使用更新的jQuery庫 –

回答

3

如果你想拖延羅塔重刑只是做一個「setTimeout的」周圍的延時功能:

$(window).load(function() { 
    var $elie = $("#super"); 
    setTimeout(function() { 
     rotate(1); 
    }, 4000) 

    function rotate(degree) { 
     $elie.css({ 
      '-webkit-transform': 'rotate(' + degree + 'deg)', 
      '-moz-transform': 'rotate(' + degree + 'deg)', 
      '-o-transform': 'rotate(' + degree + 'deg)', 
      '-ms-transform': 'rotate(' + degree + 'deg)', 
      'transform': 'rotate(' + degree + 'deg)' 
     }); 
     console.log(degree); 
     if (degree < 55) { 
      timer = setTimeout(function() { 
       rotate(++degree) 
      }, 10) 
     } 
    }; 
});​ 

(也提到取出dalay:4000,不要有你想要的效果)

提琴手例如:http://jsfiddle.net/49VEe/

EDIT2:

您可以使用HTML5 transition獲得旋轉效果,而不是你的遞歸函數(樣品刻不容緩:

$(window).load(function() { 
    var $elie = $("#super"); 
     rotate(55); 

    function rotate(degree) { 
     $elie.css({ 
      '-webkit-transform': 'rotate(' + degree + 'deg)', 
      '-moz-transform': 'rotate(' + degree + 'deg)', 
      '-o-transform': 'rotate(' + degree + 'deg)', 
      '-ms-transform': 'rotate(' + degree + 'deg)', 
      'transform': 'rotate(' + degree + 'deg)', 
      '-webkit-transition': 'all 1s ease-in-out', 
      '-moz-transition': 'all 1s ease-in-out', 
      '-o-transition': 'all 1s ease-in-out', 
      transition: 'all 1s ease-in-out' 
     }); 
    }; 
});​ 

提琴手:http://jsfiddle.net/mZzjP/

+0

感謝您的伴侶 – TheEagle

2

如果你想在旋轉,幾秒鐘後開始,包裹在一個setTimeout這樣的初始rotate(1);

setTimeout(function() { rotate(1); }, 3000); // 3 seconds 

你也應該刪除delay: 4000;因爲這隻會導致錯誤。

2

嘗試

if (degree < 55) { 
    timer = setTimeout(function() { 
     rotate(++degree) 
    }, 10); 
    delay: 4000; // remove this 
} 

if (degree < 55) { 
    timer = setTimeout(function() { rotate(++degree) }, 10); 
} 

您還需要象最初的setTimout所以

setTimeout(rotate(1), 4000); 

小提琴here