**编辑**
图片展示了我需要做的事情。当管理员点击未批准的(x)评论时,它会自动批准该评论并将图像更改为复选标记,反之亦然。
我正在使用以下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...
没有更新。如果我在代码中保留原样,那么带有该类名的图像的所有元素都会更新。感谢您的帮助......
答案 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...
这将对attr
内disapprove
类的元素应用disapproveComment
。
答案 2 :(得分:0)
$("img.disapprove").attr("src", "/img/icons/approve.png");