0

私は次のhtmlを持っています

 <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>

次に、クリックして画像を変更し、ajaxが成功した後、次のように変更します

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

私がやりたいのは、changeImageの後に遅延があり、次のように古い画像を元に戻すことです。

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

しかし、何らかの理由でそれは機能しません。それを修正する方法を提案してもらえますか?

4

2 に答える 2

3

関数はチェーン可能でもjQueryアニメーションでもありません。これは、機能する唯一のものですdelay()(より正確には、.fxキュー内のすべてのもの)。次のようにしてみてください。

success: function(data){
    changeImage( "http://site.com/syncD.png" );
    setTimeout(function() {
        changeImage( "http://site.com/sync.png" );
    }, 500);
}
于 2013-02-24T05:17:46.747 に答える
0

delayはjQuery関数であり、標準のJavaScript関数ではありません。

$().delay()

編集:

周りを検索した後、関数(以下に表示)を使用してこれを達成するためのあいまいな方法を見つけました。しかし、他の人が提案しているように、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');
于 2013-02-24T05:16:04.313 に答える