私はフォームを持っており、このフォームが AJAX 経由で送信されると、ajax-loader の画像を表示し、リクエストが完了すると、2 秒でこのローダーを非表示にしたいと考えています。残念ながら、実際には ajax-loader は常に 0.5 秒でしか表示されません (私の見積もりです)。奇妙なことに、CSS クラスtransparent
は 2 秒で非表示になりますが、イメージ ローダーは非表示になります。
私は重要なことを見落としていますか?画像ローダーが 2 秒で非表示にならず、0.5 秒で非表示になるのはなぜですか?
update_page.html.haml
%h1 Update
= render :partial => 'update_it'
_update_it.html.haml
%section#update_it
= form_for(@user, :remote => true, :html => {:class => 'form-horizontal'}) do |f|
...
= submit_tag 'Save changes', :id => 'update_information'
update.js.haml
$('#update_it').html("#{escape_javascript(render(:partial => 'update_it'))}");
setTimeout(function() {
$('section#update_it').removeClass('transparent')
} , 2000);
script.js
$(document).ready(function(){
$("#update_information").click(function(){
$('section#update_it').addClass('transparent');
$('.transparent').append('<img src="/assets/ajax-loader.gif" alt="" id="loader" class="loader" />');
});
});
EDITまだ1つ忘れていました.SUBMITボタンを初めてクリックするとCSSクラスが使用されtransparent
ますが、2回目にボタンをクリックすると、まだそうではありません。なんで?どうしたの?