2012-12-16 57 views
0

我有一張表,我正在使用jQuery進行更改。jQuery不處理dom元素的多個更改

我想做2次更改,第一次替換一個元素,然後使用tablesorter重新對錶進行排序。

$("#sl" + myrec_id).replaceWith(result.html); 
$("#scenario_item_list").tablesorter({ sortList: current_scenareoSort }); 

的問題是,如果我這樣做對錶進行排序,然後將項目添加到表中,作爲第二行而不是替換。

每條線獨立工作,但不能在一起。

更新:這裏是完整的代碼

$(".save_item_update").live("touchstart click",function(event) { 
      event.preventDefault(); 
      var mysc_id = $("#scenarioid").attr("class"); 
      var myrec_id = $("#recordid").attr("class"); 
      var loadtype = $("#edittype").attr("class"); 

      var fr_description = $("#fr_description").val(); 
      var fr_type = $("#fr_type").val(); 
      var fr_paymentfrequency = $("#fr_paymentfrequency").val(); 
      var fr_amount = $("#fr_amount").val(); 
      var fr_payhowtype = $("#fr_payhowtype").val(); 
      var fr_balance = $("#fr_balance").val(); 
      var fr_asatdata = $("#fr_asatdata").val(); 
      var fr_interestrate = $("#fr_interestrate").val(); 
      var sl_differentdata = $("#sl_differentdata").val(); 
      var sl_amount = $("#sl_amount").val(); 
      var sl_paymentfrequency = $("#sl_paymentfrequency").val(); 

      var fr_comment = $("#fr_comment").val(); 
      $.post("/scenario/save_item_update", { loadtype : loadtype, item_id : myrec_id, sl_scenario_id : mysc_id, fr_description:fr_description, fr_paymentfrequency:fr_paymentfrequency, fr_amount:fr_amount, fr_payhowtype:fr_payhowtype, fr_balance:fr_balance, fr_asatdata:fr_asatdata, fr_interestrate:fr_interestrate, fr_type:fr_type, fr_comment:fr_comment }, 
      function(result){ 

       if (result.status == "NOT LOGGED IN") { 
        NotLoggedIn(true); 
       } else if (result.status == 'ERROR') { 
        ReportError(result.errormessage,true) 
       } else { 

        if (loadtype == 'sl_remove') { 
         $("#finance_item_list tbody").append(result.html); 
         $("#sl" + myrec_id).remove(); 
         $("#mthremain").html(result.monthremaining); 
         $("#finance_item_list").tablesorter({ sortList: current_financeSort }); 
        } else if (loadtype == 'fi_dodelete') { 
         $("#fr" + myrec_id).remove(); 
        } else if (loadtype == 'fi_use') { 
         $("#scenario_item_list tbody").append(result.html); 
         $("#mthremain").html(result.monthremaining); 
         $('#fr' + myrec_id).remove(); 
         $("#scenario_item_list").tablesorter({ sortList: current_scenareoSort }); 
         closePopUp(); 
         $("#popup_body").html(''); 
        } else if (loadtype == 'fi_edit') { 
         $("#fr" + myrec_id).replaceWith(result.html); 
         $("#finance_item_list").tablesorter({ sortList: current_financeSort }); 
         closePopUp(); 
         $("#popup_body").html(''); 
        } else if (loadtype == 'sl_edit') { 
         $("#sl" + myrec_id).replaceWith(result.html); 
         $("#mthremain").html(result.monthremaining); 
         $("#scenario_item_list").tablesorter({ sortList: current_scenareoSort }); 
         closePopUp(); 
         $("#popup_body").html(''); 
        } else if (loadtype == 'fi_insert') { 
         $("#finance_item_list tbody").append(result.html); 
         //$("#finance_item_list").tablesorter({ sortList: current_financeSort }); 
         closePopUp(); 
         $("#popup_body").html(''); 
        } 

       } 

      },"json"); 
     }); 
+0

你有沒有想過使用[' .queue()'](http://api.jquery.com/queue/)? – bobthyasian

+0

請發佈您嘗試過的代碼.... –

+0

Bobthyasin我沒有嘗試.queue,但看起來有趣的感謝。 –

回答

0

那麼你需要更新的DOM。

您可以在一場或以前的直播活動中做到這一點。

編輯:

我發現這一點,可能會有所幫助:

我相信你可以使用類似觸發更新:

$(table).trigger("update") 
+0

我不確定我是否理解對不起。主要功能在現場功能,但不知道它在這裏有什麼幫助。謝謝 –

+0

感謝MaggiQall,這是行不通的。事實上,我找不到有關「更新」觸發器的任何文檔。觸發是,但不是更新事件。 –

+0

再次感謝MaggiQall。我今天發現了使用觸發器更新選項的例子。似乎應該有所幫助,但不是在這種情況下。它實際上越來越像是它在桌面插件本身中的bug /限制。 –