2013-02-24 72 views
0

我有以下的HTMLjQuery的變化圖像來回

<img id="voteImgBtn" onclick='editInstr(1);' src="http://site.com/sync.png" width="99" height="99" border="0" /> 
        <script type="text/javascript"> 
         function changeImage(a) { 
          document.getElementById("voteImgBtn").src=a; 
         } 
        </script> 

然後我改變圖像上點擊我的阿賈克斯成功後如下

success: function(data){ 
      changeImage("http://site.com/syncD.png"); 
     } 

我想要做的是有一個什麼在改變圖像之後延遲,並且像這樣恢復舊圖像:

success: function(data){ 
      changeImage("http://site.com/syncD.png"); 
      delay(500).changeImage("http://site.com/sync.png"); 
     } 

但是由於某些原因,工作。你可以給一個建議如何解決它?

+0

見'setTimeout' - https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout – mrtsherman 2013-02-24 05:16:01

+0

感謝您的鏈接。我會研究這一點。 – Ando 2013-02-24 05:22:32

+0

我找到了一種使用「延遲」功能(下面概述)的方法。儘管這是嚴格的學術練習。不知道它是否會爲不涉及jQuery動畫的代碼提供優於'setTimeout'的優勢。 – 2013-02-24 06:01:35

回答

3

你的功能既不是可鏈接的,也不是一個jQuery的動畫,這是(在隊列名爲.fx要更精確的任何東西)delay()作品的唯一的事情,嘗試這樣的事情:

success: function(data){ 
    changeImage("http://site.com/syncD.png"); 
    setTimeout(function() { 
     changeImage("http://site.com/sync.png"); 
    }, 500); 
} 
+1

感謝您的提示,是的,它的工作原理。 javaScript對我來說是一個完整的謎。必須閱讀更多關於何時適用的內容。再次感謝。稍後會接受你的答案。 – Ando 2013-02-24 05:21:55

0

delay是一個jQuery函數,不是標準的JavaScript函數。

$().delay() 

編輯:

周圍搜索後,我發現an obscure way實現這一目標使用delay功能(如下圖所示)。但你可能更好使用其他人建議的setTimeout

// Queue it in the fx queue 
$(document).delay(500).queue(function(){ 
    changeImage("http://site.com/sync.png"); 
    $(this).dequeue(); 
}); 

// Queue it in a custom queue 
$(document).delay(500, 'myQueue').queue('myQueue', function(){ 
    alert('hello'); 
}).dequeue('myQueue'); 
+0

非常有趣的答案。很高興你與我們分享。週末愉快。 – Ando 2013-02-24 06:05:46