我有这个jquery投票脚本,一切正常,只是ajax请求的成功函数中的图像没有改变图像?
jquery的:
$("a.vote_down").click(function(){
//get the id
the_id = $(this).attr('id');
//the main ajax request
$.ajax({
type: "POST",
data: "action=vote_down&id="+$(this).attr("id"),
url: "votes.php",
success: function(msg)
{
$("span#votes_count"+the_id).fadeOut();
$("span#votes_count"+the_id).html(msg);
$("span#votes_count"+the_id).fadeIn();
// this is my problem here
$("span#vote_buttons"+the_id).attr("src", "images/downvoteActive.png");
}
});
});
HTML:
<span class='vote_buttons' id='vote_buttons<?php echo $row['id']; ?>'>
<a href='javascript:;' class='vote_up' id='<?php echo $row['id']; ?>'>Vote Up!</a>
<a href='javascript:;' class='vote_down' id='<?php echo $row['id']; ?>'>Vote Down!</a>
的CSS:
a.vote_up, a.vote_down {
display:inline-block;
background-repeat:none;
background-position:center;
height:16px;
width:16px;
margin-left:4px;
text-indent:-900%;
}
a.vote_up {
background:url("images/upvote.png");
}
a.vote_down {
background:url("images/downvote.png");
}
</span>
答案 0 :(得分:2)
<强>更新强>
根据更新后的问题,span
元素没有src
属性。
您还有另一个主要问题。您将相同的id
分配给多个元素:vote_up
和vote_down
链接会发生这种情况。
根据我的理解,您可能只想为每个id
和vote_up
链接指定唯一的vote_down
,并且只需在成功回调中更改其背景网址。< / p>
第二次更新:
我们为每个vote_up
和vote_down
链接分配一个唯一ID:
<a ... class='vote_up' id='vote_up<?php echo $row['id']; ?>'> ...
<a ... class='vote_down' id='vote_down<?php echo $row['id']; ?>'> ...
然后,您可以尝试用以下方法替换有问题的attr()
来电:
$("#vote_up" + the_id).css("background-image", "url(images/downvoteActive.png)");
上一个答案:
您正在尝试更改src
元素的span
属性。我想这应该是img
,但你可以从选择器中省略标签名称:
$("#vote_buttons"+the_id).attr("src", "images/downvoteActive.png");
答案 1 :(得分:0)
您的选择器显示“span#vote_buttons”,而非“img#vote_buttons”。基于“id”值的选择器不需要标签名称,通常最好将其关闭。