2015-04-14 24 views
0

on change事件正常工作后发生的第一个replaceWith事件正常。出于某种原因,我的AJAX调用的success部分中的2 replaceWith不会触发。我可以添加alert("test");,这工作正常。不知道我在这里错过了什么。replaceWith成功AJAX调用后没有触发

$('.addsheet1').on('change', function() { 
    $('.sheet1upprog').replaceWith('<i class="fa fa-spin fa-spinner"></i>'); //works fine 
    var id = $('.id').val(); 
    var formdata = new FormData(); 
    jQuery.each($('.addsheet1')[0].files, function(i, file) { 
     formdata.append('addsheet1', file); 
    }); 
    $.ajax({ 
     url: "addsheet1only.php?id="+id, 
     data : formdata, 
     type : "post", 
     cache: false, 
     contentType: false, 
     processData: false, 
     success: function(data){ 
      if (data == 'ok') { 
       alert("test"); //works fine 
       $('.sheet1upprog').replaceWith('<i class="fa fa-check"></i>').delay(1000); //does not work 
       $('.sheet1upprog').replaceWith('<i class="fa fa-cloud-upload"></i>'); //does not work 
      } 
     }, 
     failure: function(){ 
      $(this).addClass("error"); 
     } 
    }); 
    return false; 
}); 
+0

你能添加你正在试图改变HTML的部分? –

回答

3

在第一replaceWith呼叫时,您已经删除与sheet1upprog类的标签,所以它是不可用随后的时间(在你的成功回调)。

我猜你正在寻找的是这样的 -

$(".sheet1upprog").html("<new_html_content_here>"); 
+0

所以'replaceWith'的功能就像'replaceClass'? –

+0

@CesarBielich - 它有助于阅读文档:http://api.jquery.com/replacewith/ – JDB

+0

replaceWith用您指定的表达式替换整个标签及其内部内容。 – Sam