2015-05-30 108 views
0

我对我正在制作的网页有一个小问题,但相当恼人的问题。所以我有一个链接,当点击时,向PHP脚本发出一个AJAX请求(链接发送一个隐藏的输入值,如果有的话)。它工作正常,它按我的预期工作,但如果我再次尝试点击链接,它什么都不会做。我必须刷新页面才能使其重新工作,我宁愿不必这样做。在AJAX请求后链接不工作

链接: <a name='delete-link' href='#'>Delete</a>

的JavaScript:

$("a[name='delete-link']").click(function(e){ 
     e.preventDefault(); 
     var ID = $(this).parents("ul").find("input[name='delete-identifier']").val(); 

     $.ajax({ 
      type: 'POST', 
      url: '../ajax.php', 
      data: {delete: 'true', delete_id: ID}, 
      success: function(response){ 
       $("#result").html(response).fadeIn(500).delay(5000).fadeOut(500); 
       $("div[name='update']").load("test.php #update"); 
      } 
     }) 
    }) 

在#UPDATE DIV唯一的代码是这样的PHP代码呼应表显示用户:

<?php 
    if ($rs){ 
     $user_table = "<table class='table table-bordered table-condensed table-hover table-striped'><th>Action</th>"; 
     $user_table .= "<tr><th>Name</th><th>Privilege ID</th></tr>"; 
     while ($user = $rs->fetch_array(MYSQL_ASSOC)){ 
      $user_table .= "<td>". $rank['RankName'] ."</td><td>". $user['PrivilegeID'] ."</td><td>"; 
      $user_table .= "<td><div class='btn-group'> 
            <button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-expanded='false'> 
            Action <span class='caret'></span> 
            </button> 
            <ul class='dropdown-menu' role='menu'> 
            <input type='hidden' name='delete-identifier' value='". $user['ID'] ."'> 
            <li><a name='delete-link' href=''>Delete</a></li> 
            </ul> 
           </div> 
          </td><tr>"; 
     } 
     $user_table .= "</table>"; 
     echo($user_table); 
    } 
?> 

任何想法?

+0

随着看到代码,它很难说, – Zee

+0

链接:'Delete',使用Javascript:'$( “一个[名称= '删除链路']”)点击(函数(e)中{ \t \t \t e.preventDefault(); \t \t \t变种ID = $(本)。家长( “UL”)。找到( “输入[名称= '删除标识符']”)。VAL (); \t \t \t $阿贾克斯({ \t \t \t \t类型: 'POST', \t \t \t \t网址: '../ajax.php', \t \t \t \t数据:{删除: '真' ,delete_id:RankID}, \t \t \t \t成功:功能(响应){ \t \t \t \t \t $(“#result”)。html(response).fadeIn(500).delay(5000).fadeOut(500); \t \t \t \t \t $(“div [name ='update']”)。load(“ranks.php #update”); \t \t \t \t} \t \t \t}) \t \t})' – Cludas18

+0

看起来非常容易阅读的^^ – Cludas18

回答

3

ajax后你正在更新div,.click()不适用于动态加载的html。 使用.on()

$(document).on("click","a[name='delete-link']",function(e){ 
    e.preventDefault(); 
    var ID = $(this).closest("ul").find("input[name='delete-identifier']").val(); 

    $.ajax({ 
     type: 'POST', 
     url: '../ajax.php', 
     data: {delete: 'true', delete_id: ID}, 
     success: function(response){ 
      $("#result").html(response).fadeIn(500).delay(5000).fadeOut(500); 
      $("#update").load("test.php"); 
     } 
    }) 
}) 

在地方的$(document)您可以使用动态内容父的ID选择为$('#updateDivParentId')