【问题标题】:after ajax call jquery function not working properlyajax调用jquery函数后无法正常工作
【发布时间】:2012-06-18 13:18:32
【问题描述】:

标题:

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

照片.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(); 这个选择器不能正常工作是什么原因?谢谢

【问题讨论】:

    标签: php jquery html


    【解决方案1】:

    因为您甚至在将新内容注入 DOM 之前就限制了 click 事件的功能。因此,新添加(注入)的动态内容将无法使用该功能。要处理这个,你需要使用 jQuery on

    所以改变你的代码

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

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

    jQuery on 将适用于当前和未来的元素。 on 从 jQuery 1.7+ 开始可用。如果您使用的是以前版本的 jQuery,请使用 live

    【讨论】:

      【解决方案2】:

      尝试:

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

      【讨论】:

      • $(".cmdclose").live("click",function(){ 非常感谢
      【解决方案3】:

      你的 jquery 代码中的问题你的代码是这样的。

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

      问题是“cmdclose”这个类在你的 html par 中不可用。

      所以首先你需要在 html 标签中指定这个类,比如 div,tr 等。

      之后它的工作请试试这个

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多