2014-11-14 41 views
2

我以某種方式設法編寫一個工作系統,從數據庫中檢索的表中刪除一行。我的代碼中的jquery刪除行表錯誤

有我的代碼有問題,我想不出正確

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 
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> 
    "; 
} 
?> 
的PHP代碼

Everythings正常工作。

但導航菜單使用相同的<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> 

我很困惑。該怎麼辦?

+0

添加類到像爲' '和'$(' a')的關閉按鈕標籤點擊(函數() {'將行更改爲'$(「。delete_row」)。單擊(函數(){' –

+0

@Ahosan Karim Asik:有多行,這樣會重複ID,這是無效的,並且不起作用:( –

+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類到任何「刪除鏈接」(顯然不是任何其他鏈接)。類可以用來暗示元素的特定行爲(從jQuery的角度來看)。當有多個元素時,應避免使用ID或partial-ID選擇器。
  • 使用parent().parent()是「脆弱的編碼」,並且不與HTML變化應對,所以針對特定的祖先元素與closest()代替(例如closest("tr")
  • 我在示例更名parent到更有意義$tr,如我假定它是你刪除的行。
  • 爲了便於閱讀,我使用$ prevfix for jQuery對象變量。
  • 您不需要鏈接中的href=\"javascript:return(0);\"。將其更改爲簡單的#書籤鏈接。
+0

這就是它......正常工作......非常感謝 –

1

更改下面一行形式:

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

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

如果在頁面中添加了另一個表格,這將失敗。它需要更明確的目標(例如一個特定的表ID?) –

+0

是的,但OP,asper OP問題我已經回答簡單的方法,如果有任何a.delete地方在同一頁你的邏輯也將失敗.. ohhh? –

+0

是的,但是你可以控制添加它所屬的'delete'類*,它將具有代碼固有的意義,這段代碼沒有提供範圍,這只是一個建議,隨意忽略建議並保留我t *簡單*。 :) –