jQuery - 加载新图像src时出错

时间:2011-07-21 06:10:14

标签: jquery

**编辑**

图片展示了我需要做的事情。当管理员点击未批准的(x)评论时,它会自动批准该评论并将图像更改为复选标记,反之亦然。

enter image description here

我正在使用以下jQuery代码,但是在点击时加载新图像src时遇到问题。

<script>
$(document).ready(function(){   
$(".disapproveComment").click(function() {
    var ID = $(this).children("p").text();
    $.ajax({        
        type: "POST",
        url: "/comments/disapproveComment/"+ID,
        async:false,
        success: function(msg){
            //Using $(this).(".disapprove")... does not work
            $(".disapprove").attr("src","/img/icons/approve.png");
        }
    });
});
});
</script>

这是我的视图文件

<?php
    if($comment['Comment']['approved'] == 1){
        echo '<div class="disapproveComment"><p style="display:none">';
        echo $comment['Comment']['id'];
        echo '</p><img class="disapprove" src="/img/icons/approve.png" border="0">';
        echo '</div>';
    }else{
        echo '<div class="approveComment"><p class="idAnchor" style="display:none">';           
        echo $comment['Comment']['id'];
        echo '</p><img class="approve" src="/img/icons/disapprove.png">';
        echo '</div>';
    }       
?>
</td>

如果我说$(this).(".disapprove").attr...没有更新。如果我在代码中保留原样,那么带有该类名的图像的所有元素都会更新。感谢您的帮助......

3 个答案:

答案 0 :(得分:1)

在ajax回调中,您有另一个上下文,因此您需要在变量中保留上下文。

<script>
$(document).ready(function(){   
$(".disapproveComment").click(function() {
    var comment = $(this);
    var ID = $(this).children("p").text();
    $.ajax({        
        type: "POST",
        url: "/comments/disapproveComment/"+ID,
        async:false,
        success: function(msg){
            //Using $(this).(".disapprove")... does not work
            comment.find(".disapprove").attr("src","/img/icons/approve.png");
        }
    });
});
});
</script>

答案 1 :(得分:0)

使用这种结构:

$(this).find(".disapprove").attr...

这将对attrdisapprove类的元素应用disapproveComment

答案 2 :(得分:0)

$("img.disapprove").attr("src", "/img/icons/approve.png");