2013-03-24 2 views
22

У меня есть таблицаJQuery удалить строку таблицы

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

Я использую эту функцию Jquery поэтому, когда пользователь нажимает на удаление, фон строки изменится и строка затем удалить

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

только фон меняется, но строка не удаляется, почему? как решить?

+0

Вот хорошая статья http://codepedia.info/2015/02/remove-table-row-tr -in-jquery/о том, как удалить таблицу даже для динамически добавленного tr –

ответ

57

Строка удаляется, но по щелчку вы переходите по ссылке, она немедленно восстанавливается, когда страница обновляется.

Добавить return false; или event.preventDefault(); в конце обратного вызова, чтобы предотвратить поведение по умолчанию:

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

Обратите внимание, что я использовал closest для более надежного кода: если другой элемент приходит между ними, tr все равно будет найден.

+0

ссылка не работает, – user2059935

+0

Что вы имеете в виду? Нажмите «удалить»: строка исчезает, а затем удаляется. –

+0

спасибо, он работает, я буду принимать ур ответ через 4 минуты – user2059935

3

Что вы забыли сделать, это установить хэш в вашу ссылку. пример:

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

должен быть

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

или

return false; 

в конце вашего

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

+1 к u, спасибо u – user2059935

2

Вот еще один вариант.

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

Если вы хотите только 1 строка в таблице будет выбран в то время

$("#data tr").click(function() { 
    var selected = $(this).hasClass("highlight"); 
    $("#data tr").removeClass("highlight"); 
    if(!selected) 
      $(this).addClass("highlight"); 
Смежные вопросы