2013-03-24 16 views
22

Mam tabelijquery usunąć wiersz tabeli

<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> 

używam tej funkcji jquery tak, gdy użytkownik kliknie przycisk Delete, tło wiersza zmieni i rząd następnie usunie

$(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(); 
     }); 
    }); 
}); 

tylko tło się zmienia, ale wiersz nie jest usunięty, dlaczego? jak rozwiązać?

+0

Oto miły artykuł http://codepedia.info/2015/02/remove-table-row-tr -in-jquery/jak usunąć tabelę nawet dla dynamicznie dodanego tr –

Odpowiedz

57

Wiersz został usunięty, ale gdy kliknięcie powoduje przejście do odnośnika, natychmiast zostaje przywrócony po odświeżeniu strony.

Dodaj return false; lub event.preventDefault(); na końcu wywołania zwrotnego aby zapobiec zachowanie domyślne:

$(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

Zauważ, że użyłem closest bardziej niezawodnego kodu: jeśli inny element pochodzi pomiędzy, tr nadal będzie można znaleźć.

+0

link nie działa, – user2059935

+0

Co masz na myśli? Kliknij "usuń": wiersz zanika, a następnie zostaje usunięty. –

+0

dziękuję, to działa, przyjmuję odpowiedź ur po 4 minutach – user2059935

3

To, czego zapomniałeś, to ustawić skrót w twoim linku. przykład:

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

powinny być

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

lub

return false; 

w końcu

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

+1 do u, dzięki – user2059935

2

Oto kolejna opcja.

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

Jeśli chcesz tylko 1 wiersz w tabeli, która zostanie wybrana w czasie

$("#data tr").click(function() { 
    var selected = $(this).hasClass("highlight"); 
    $("#data tr").removeClass("highlight"); 
    if(!selected) 
      $(this).addClass("highlight");