Jquery在我的代码中删除行表错误

时间:2014-11-14 09:49:05

标签: javascript php jquery mysql

我以某种方式设法对一个工作系统进行编码,以从从数据库中检索的表中删除一行。

我的代码存在问题,我无法纠正

用于删除和向上滑动行的Jquery函数

<script type="text/javascript">
    $('document').ready(function() {
        $('a').click(function() {
            if (confirm("Are you sure?")) {
                var del_id = $(this).attr('id');
                var parent = $(this).parent().parent();

                $.post('delete.php', {id:del_id},function(data){
                    parent.slideUp('slow', function() {
                        $(this).remove();
                    });
                });
            }
            return false;
        });
    });
</script>

以下是检索表的PHP代码

<?php
while(($row = mysqli_fetch_assoc($result))) {
    echo "<tr>";
    echo "
        <td>
            <span class='label label-red'>".$row['lid']."</span>
        </td>                                
        <td>
            ".$row['name']."
        </td>    
        <td>
            <a href='#'>".$row['email']."</a>
        </td>       
        <td>
            ".$row['tel']."
        </td>    
        <td>
            Mental Stress Relief
        </td>  
        <td>
            <a href=\"javascript:return(0);\" id=".$row['lid'].">Delete</a>
        </td>
    ";
}
?>  

每一件事都很好。

但导航菜单使用相同的<a>标签,因此当我点击此页面中的导航链接时......它会像表格一样向上滑动。我无法导航......我应该使用ID还是其他东西?

<ul class="navigation">            
    <li><a href="dashboard.php" class="blblue">Statistics</a></li>
    <li><a href="leads.php" class="blyellow">Lead Detials</a></li>
    <li><a href="includes/logout.php" class="blred">Logout</a></li>                
</ul>

我很困惑。怎么办?

2 个答案:

答案 0 :(得分:1)

使用类来标识各种类型的链接。例如class="delete"并更改您的代码以定位:

 $(function () {
     $('a.delete').click(function () {
         if (confirm("Are you sure?")) {
             var del_id = $(this).attr('id');
             var $tr = $(this).closest('tr');
             $.post('delete.php', {
                 id: del_id
             }, function (data) {
                 $tr.slideUp('slow', function () {
                     $(this).remove();
                 });
             });
         }
         return false;
     });
 });

PHP改为:

<td>
    <a href="#" class="delete" id=".$row['lid'].">Delete</a>
</td>

注意:

  • 您在DOM就绪处理程序中有文档引号。他们不需要。我改为使用了DOM就绪处理程序的快捷方式版本,即$(function(){...});
  • delete课程添加到任何&#34;删除链接&#34; (显然不是任何其他链接)。类可以用来暗示元素上的特定行为(从jQuery的角度来看)。如果有多个元素,则应避免使用ID或部分ID选择器。
  • 使用parent().parent()是&#34;脆弱的编码&#34;并且不处理HTML更改,因此请使用closest()定位特定的祖先元素(例如closest("tr")
  • 我将parent重命名为示例中更有意义的$tr,因为我认为它是您删除的行。
  • 我为jQuery对象变量使用$上限,以提高可读性。
  • 您的链接中不需要href=\"javascript:return(0);\"。将其更改为简单的#书签链接。

答案 1 :(得分:1)

更改以下行格式:

$('a').click(function(){

$('td a').click(function(){