2013-07-06 41 views
16

Tôi đang sử dụng datatables jquery và tôi có một số <tr> bên trong một bảng với cấu trúc sau:jQuery: xóa hàng trong datatables

<tr class="odd"> 
    <td class=" sorting_1">0</td> 
    <td class=" ">2011</td> 
    <td class=" ">20</td> 
    <td class=" "> 
     <span class="btn-group"> 
      <a class="del btn btn-small" href="#"><i class="icon-delete"></i></a>  
     </span> 
    </td> 
</tr> 

tôi lớn không lành mạnh mã jquery sau đây để xóa hàng liên quan đến nút I bấm vào.

$(".del").bind("click", function(event){ 
     var target_row = $(this).parent().parent().parent(); 
     var aPos = oTable.fnGetPosition(target_row); // the error occurs here! 
     oTable.fnDeleteRow(aPos); 
      }); 

nhưng tôi có được một lỗi như thế này:

"TypeError: a.nodeName is undefined" trong jquery tập phút kịch bản.

EDIT:

Đây mã để tạo datatables:

if($.fn.dataTable) { 
      $(".mws-datatable").dataTable(); 
      var oTable = $(".mws-datatable-fn").dataTable({ 
       bRetrieve: true, 
      sPaginationType: "full_numbers" 
      }); 
     } 
+0

xin vui lòng gửi toàn bộ jQuery có liên quan của bạn code :) và thử bao gồm jquery từ API Google và xem nó hoạt động –

+0

Hàm logic trong hàm fnGetPosition là gì? – Hearaman

+0

Tôi đã thử sử dụng CDN của Google, nhưng nó không hoạt động. @Hearaman ở đây bạn có thể tìm thấy logic n fnGetPosition: http://datatables.net/ref#fnGetPosition – GVillani82

Trả lời

51

tôi giải quyết vấn đề sử dụng mã này:

$(".del").bind("click", function(event) { 
    var target_row = $(this).closest("tr").get(0); // this line did the trick 
    var aPos = oTable.fnGetPosition(target_row); 

    oTable.fnDeleteRow(aPos); 
}); 
+5

+1: bạn sẽ nhận được một trăm upvotes cho việc này. cảm ơn! – naveen

+2

Không hoạt động với phiên bản mới nhất :( – Nitesh

1
$().ready(function() { 
    $('body').on('click', '#deletebtn', function() { 
    $("#example1 tr").each(function() { 
     var rowSelector = $(this); 

     if (rowSelector.find("input[type='checkbox']").prop('checked')) { 
     rowSelector.remove(); 
     } 
    }); 
    }); 
});