2015-05-09 35 views
1

所以我在使用jquery刪除表中的特定tr時遇到問題。無法使用jquery刪除表中的tr

所以這是該方案:

我有一個可點擊表中的行哪裏。當我點擊其中一個時,我將能夠更新與該行關聯的對象數據。但是,在更新對象後,我想反映特定tr的td中的變化。

我的解決方案是,刪除舊的tr並用新的tr替換。但是,它並沒有刪除舊的tr,而只是插入了新的tr。所以這是我的代碼:

function update_table_after_updating(selected_violator){ 
      violators_table.find('tr').each(function (i, el) { 
       var tr = ($(this)); 
       var td_text = $(this).find('td:first').text();  
       if(td_text == selected_violator.violator_id){ 
        console.log(tr); 
        //I cant remove this row 
        tr.remove(); 
        return false; 
       } 
      }); 
      update_table(selected_violator); 
     } 

的update_table()函數

function update_table(violator){ 
     var img_str1 = '<img class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.front_temp_file_path + '\">'; 
     var img_str2 = '<img style=\"margin-left: 10px;\" class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.rear_temp_file_path + '\">'; 
     var img_str3 = '<img style=\"margin-left: 10px;\" class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.right_temp_file_path + '\">'; 
     var img_str4 = '<img style=\"margin-left: 10px;\" class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.left_temp_file_path + '\">'; 

     violators_table.dataTable().fnAddData([ 
      violator.violator_id, 
      violator.get_full_name(), 
      'Under Construction', 
      img_str1 + img_str2 + img_str3 + img_str4, 
     ]); 
     $('#violators_tbl tbody tr').on('click', function(){ 
      var td = $(this).find('td:first').text(); 
      //returns violator object 
      selected_violator = get_violator(td); 
      show_modal('view_violator'); 
     }); 
    } 

非常感謝您!您的答覆將不勝感激。

PS:我正在使用jQuery DataTables。

+0

你可以創建一個小例子[http://plnkr.co/](plnkr) – vijay

回答

1

嗯,這是有點令人失望的,我已經經歷了jQuery的文檔搜索,然後我找到這個:

.empty() - >這個方法不是僅刪除子(和其他後裔) 元素,但也匹配元素集合中的任何文本。這個 是因爲,根據DOM規範,元素內的任何文本字符串 被視爲該元素的子節點。考慮以下HTML:

與remove()不同。 empty()還會刪除所選元素的子節點。

而且,瞧! tr已被刪除。

+0

這是一個相當的發現,我必須說! – lshettyl