0

onclickのテキストを置き換え、ロードして最終テキストに置き換えたいだけです:

$("#rebuild").click(function(){
    $("#rebuild").replaceWith("in progress...").load("/rebuild").replaceWith("end !");
});

/rebuild スクリプトは正しくロードされていますが、最終的な置換が表示されません...なぜですか?

4

2 に答える 2

2

load非同期の ajax メソッドです。これは、replaceWithサーバーからのデータが要素に配置される前に最終的に発生することを意味します。同じ要素での連鎖replaceWithはせいぜい不安定です。一度置き換えられると存在しなくなり、次の要素がないためです。replace

の完全なコールバックを使用する必要がある後に置き換えたい場合'load

$("#rebuild").click(function () {
    $(this).html("in progress...").load("/rebuild", function () {
        setTimeout(function(){
          $(this).html( "end !");  
        }, 2000)
    })
});

を使用setTimeoutして最終的な変更を行ったので、瞬間的ではないか、負荷全体が意味をなさない. html()要素はreplaceWithまだ存在し、その内容のみが変更されます。

于 2013-10-27T02:22:38.550 に答える
1

http://api.jquery.com/load/

Load は、関数が完了すると、関数の引数も受け入れます。

$("#rebuild").click(function(){
    $("#rebuild").replaceWith("in progress...").load("/rebuild", function(){
        $(this).replaceWith("end !");
    });
});

編集:ダーン、誰かが私を打ち負かしました:P

于 2013-10-27T02:21:40.167 に答える