2012-06-18 102 views
2

標題:後Ajax調用jQuery的功能不能正常工作

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<script type="text/javascript" src="js/timeago.js" ></script> 
<script src="js/test_helpers.js" type="text/javascript"></script> 

photos.php

$(".cmdclose").click(function(){ 

    var id=this.id; 

    $.post("cmddel.php" ,{"id":id}); 
     setTimeout(function(){  
     <?php echo 'var id = '.json_encode($_GET['id']).';'; ?> 
     $('#cmdz').load('cmdajax.php?id='+id);  
    },1000); 

}); 

HTML的一部分:

<div id="cmdz"> 
    <?php 
    $uid=$_SESSION['uid']; 
    $query="SELECT * 
    FROM `cmds` 
    WHERE `pid` =${id} ORDER BY `id`"; 
    $result=$db->query($query); 
    ?> 

    <table id="tblcmd"> 
     <tr> 

    <? 
    while($result_set=$db->fetch($result)){ 
     // echo $result_set['cmds']; 
     $uid=$result_set['uid']; 

     $query2="SELECT * FROM `user` WHERE `id` ='${uid}'"; 

     $result2=$db->query($query2); 
     $result_set2=$db->fetch($result2); 


     echo '<td>'.$result_set2['name'].'</td>'; 

     echo '<td>:'.$result_set['cmds'].'</td>'; 
     echo '<td id="'.$result_set['id'] .'"><img src="images/cmd-close.jpg" class="cmdclose" id="'.$result_set['id'] .'" /> </td>'; 

     ?> 
     </tr> 
     <?php 
    } 
    ?> 

    </table> 

</div> 

cmdajax.php

<?php 
    session_start(); 
    require_once("includes/database.php"); 
    if(isset($_GET['id'])){ 
     $id=$_GET['id']; 
    } 

    $uid=$_SESSION['uid']; 
    $query="SELECT * FROM `cmds` WHERE `pid` =${id} ORDER BY `id`"; 

    $result=$db->query($query); 
?> 

<table id="tblcmd"> 
    <tr> 
    <?php 
    while($result_set=$db->fetch($result)){ 
    // echo $result_set['cmds']; 
    $uid=$result_set['uid']; 

    $query2="SELECT * FROM `user` WHERE `id` ='${uid}'"; 

    $result2=$db->query($query2); 
    $result_set2=$db->fetch($result2); 

    echo '<td>'.$result_set2['name'].'</td>'; 
    echo '<td>:'.$result_set['cmds'].'</td>'; 
    echo '<td id="'.$result_set['id'] .'"><img src="images/cmd-close.jpg" class="cmdclose" id="'.$result_set['id'] .'" /> </td>'; 
    echo '<td><abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr></td>'; 
    ?> 
    </tr> 
    <?php 
    } 
    ?> 

     </table> 

我的問題是,在頁面刷新或Ajax調用後,函數$(".cmdclose").click(function()將不起作用。爲什麼不呢?///這個問題解決

現在我面臨這樣的問題:

的jQuery( 「abbr.timeago」)TIMEAGO()。 這個選擇器不能正常工作什麼是共振?謝謝

回答

16

因爲即使在將新內容注入到DOM之前,您也會限制click事件的功能。所以這個功能將不可用於新添加的(注入的)動態內容。爲了解決這個問題,你需要使用jQuery on

所以從

$(function(){ 
    $(".cmdclose").click(function(){  
    // your code  
    }); 
}); 

更改代碼

$(function(){ 
    $(document).on("click",".cmdclose",function(){ 
     //your code 
    }); 
}); 

jQuery的on將爲當前和未來元素的工作。 on是從jQuery 1.7+開始avaialbe。如果您在使用jQuery的先前版本,使用live

+1

由於現在它的正常工作 –

+0

@Compiler指定這個類的html標記類似div,TR等

:不客氣。很高興我能幫上忙。 :) – Shyju

5

嘗試:

$(".cmdclose").live("click",function(){... 
+1

$(「。cmdclose」)。live(「click」,function(){ 這工作完全謝謝 –

+0

.live不再有效,使用.on代替 – hjardine

2

問題jQuery代碼的代碼是這樣的。

$(".cmdclose").click(function() 

問題是「cmdclose」這個類不在你的html par中可用。

所以首先你需要後,其工作PLZ試試這個