私はjavascript varを使ってajax呼び出しの実行を制御しています。コールはクリックイベント(「#week _tag
」div)からトリガーされ、1ページのロードごとに1回だけ実行する必要があります。同じクリックイベントは、ajax呼び出しからのデータが表示されるスライディングペイン( "#week_summary")の表示を切り替えます。javascript変数の値をクリアするには?
次の例では、ユーザーが「#week _tag
」divを2回クリックしてスライドペインを閉じると、ajax呼び出しが呼び出されないように変数とifステートメントを使用しようとしています。 varステータスは、ページが読み込まれるときに「before」に設定され、ajax呼び出しが行われると「after」に設定されます。 varのステータスが "before"に等しい場合、呼び出しが実行されます。そうでなければ、 "#week_summary"はちょうどトグルされます。私はvar "status"に "after"の第2の値を与える方法がわからないので動作しません。何か案は?
$(document).ready(function(){
var status = "before";
alert("before:"+status);
$('#week_tag').click(function(){
if(status =="before"){
alert("afterclick:"+status);
var form_date_set = $("input[name='date_set']").val();
$.post("/tortus/index.php/daylog/build_summary",
{date_set:form_date_set},
function(html){
$("#week_summary").html(html);
var status = "after";
});
}
$('#week_summary').toggle('blind');
alert("after:"+status);
});
});
それで解決できないと思います。問題は、クロージャの外側で変更された場合でも、クロージャが作成されたときにバインドされた値を「ステータス」が保持することです。 – KaptajnKold
また、ajax呼び出しはasynchなので、警告は常に前になります。 – redsquare
@KaptajnKold:変数はajax関数クロージャの外側で作成されるため、document.ready関数内のすべての関数で使用できるようになります。 – peirix