2013-03-24 43 views
22

Tôi có một bảngjquery xóa bảng hàng

<table id="favoriteFoodTable"> 
    <th> 
     Food Name: 
    </th> 
    <th> 
     Restaurant Name: 
    </th> 
    <th> 

    </th> 
    <?php while ($row = $foods->fetch()) { 
     ?> 
     <tr> 
      <td> 
       <?php echo $row['foodName']; ?> 
      </td> 
      <td> 
       <?php echo $row['restaurantName']; ?> 
      </td> 
      <td> 
       <a class="deleteLink" href="" >delete</a> 
      </td> 
     </tr> 
    <?php } ?> 
</table> 

tôi sử dụng chức năng jquery này để khi người dùng nhấp chuột vào xóa, nền của hàng sẽ thay đổi và hàng sau đó sẽ xóa

$(document).ready(function() { 
    $("#favoriteFoodTable .deleteLink").on("click",function() { 
     var td = $(this).parent(); 
     var tr = td.parent(); 
     //change the background color to red before removing 
     tr.css("background-color","#FF3700"); 

     tr.fadeOut(400, function(){ 
      tr.remove(); 
     }); 
    }); 
}); 

chỉ nền đang thay đổi nhưng hàng không bị xóa, tại sao? giải quyết thế nào?

+0

Dưới đây là bài viết đẹp http://codepedia.info/2015/02/remove-table-row-tr -in-jquery/về cách xóa bảng ngay cả khi được thêm động tr –

Trả lời

57

Hàng bị xóa nhưng khi nhấp vào sẽ khiến bạn theo liên kết, nó sẽ được khôi phục ngay lập tức khi trang được làm mới.

Thêm return false; hoặc event.preventDefault(); vào cuối gọi lại để ngăn chặn hành vi mặc định:

$(document).ready(function() { 
    $("#favoriteFoodTable .deleteLink").on("click",function() { 
     var tr = $(this).closest('tr'); 
     tr.css("background-color","#FF3700"); 
     tr.fadeOut(400, function(){ 
      tr.remove(); 
     }); 
     return false; 
    }); 
}); 

Demonstration

Lưu ý rằng tôi đã sử dụng closest cho một mã số đáng tin cậy hơn: nếu yếu tố khác đi ở giữa, số tr sẽ vẫn được tìm thấy.

+0

liên kết không hoạt động, – user2059935

+0

Ý của bạn là gì? Nhấp vào "xóa": hàng mờ dần sau đó sẽ bị xóa. –

+0

cảm ơn bạn, nó hoạt động, tôi sẽ chấp nhận câu trả lời ur sau 4 phút – user2059935

3

Điều bạn quên làm là đặt băm trong liên kết của bạn. dụ:

<a class="deleteLink" href="" >delete</a> 

nên

<a class="deleteLink" href="#" >delete</a> 

hoặc

return false; 

ở cuối của bạn

$(document).ready(function() { 
    $("#favoriteFoodTable .deleteLink").on("click",function() { 
     ... 
     return false; 
    }); 
}); 
+0

+1 to u, cảm ơn bạn – user2059935

2

Dưới đây là một tùy chọn.

function DeleteRowOfProductTable(productID){ 
    $('#YourTableId tr').each(function (i, row) { 
     var $row = $(row); 
     var productLabelId = $row.find('label[name*="Product_' + productID + '"]'); 

     var $productLabelIdValue = $productLabelId.text(); 
     if (parseInt(productID) == parseInt($productLabelIdValue)) 
     { 
      $row.remove(); 
     } 
    }); 
} 
0

Nếu bạn muốn chỉ có 1 hàng trong bảng được lựa chọn tại một thời điểm

$("#data tr").click(function() { 
    var selected = $(this).hasClass("highlight"); 
    $("#data tr").removeClass("highlight"); 
    if(!selected) 
      $(this).addClass("highlight"); 
Các vấn đề liên quan