0

コード担当者の何が問題なのですか。これをローカルホストで実行する際に問題があります。これgetModuleData()は、ユーザーが onclick イベントをトリガーしたときに呼び出されます。module_list div はページの最初のロード時に非表示になり、lastSelectedModule は -1 に設定されます。これで、ユーザーがクリックしてボタンをクリックすると、getModuleData(). 問題は、ボタンをクリックすると、最初に新しいデータがロードされ、次にフェードアウトしてから再びフェードインすることです。私が本当にやりたいことは、古いデータをフェードアウトしてから新しいデータをフェードインすることです。console.log(); を使用してトレースしてみました。しかし、出力はです。

アヤックスではない

アヤックス

アヤックスではない

アヤックス

html

いくつかのコード

<a href='javascript:void(0);' onClick = 'getModuleData(sampleIdid)'><span>Click me</span>

<div id ="module_list"> 
      <div id ="module_content">

      </div>
</div>

JavaScript

function getModuleData(id)
{ 
    if(lastSelectedModule === -1){
       var off_set = $('#circular_navigation').offset().top;
       $('#module_list').show(1000,null);
       $('#hr_blue').show();
       animateScroll(off_set,800); 
    }

    if (lastSelectedModule !== id)
    {  
    console.log("Not Ajax");
    $('#module_content').fadeOut(1000,'',null);
    $('#loading').fadeIn(); 
    $('#module_icon_'+lastSelectedModule).removeAttr('style'); 
    document.getElementById('module_icon_'+id).style.cssText = '-moz-box-shadow: 0 0 0 10px #1589FF; -webkit-box-shadow: 0 0 0 10px #1589FF;  box-shadow: 0 0 10px #1589FF;';

        $.ajax({
              type: "GET",
              url: 'getModuleById.php',
              data: "module_id=" + id,  
              success: function(data) { 
              $('#loading').hide(); 
              $('#module_content').fadeIn(1000,null).html(data); 
              var targetOffset = $("#"+id).offset().top  - $('#circular_navigation').outerHeight(true); 
              animateScroll(targetOffset,800); 
                      console.log("Ajax");
            }
        }); 
        lastSelectedModule = id;
    }
}
4

1 に答える 1

0

Live demo

fadeInおよびメソッドのコールバック パラメータを使用fadeOutして、効果の直後に何かを行うことができます。したがって、必要なことを行う正しい方法は、要素をフェードアウトしてから変更し、コールバックを使用してフェードインすることです。例えば:

$('#module_content').fadeOut(1000, function() {
    $(this).html('Some new text').fadeIn(1000);
});

http://api.jquery.com/fadeOut/

于 2013-04-16T02:43:00.740 に答える