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)
    })
});

我用 asetTimeout来做最后的改变,所以它不是瞬时的,或者整个负载没有意义。Also usedhtml()而不是replaceWithso 元素仍然存在,只有它的内容发生了变化

于 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 !");
    });
});

编辑:Durn,有人打败了我:P

于 2013-10-27T02:21:40.167 回答