我有一個評級功能,如下所示:一旦用戶點擊+1按鈕,等級提高1,並保存到MySQL。我想要它做的事情是一旦點擊,它將 的背景改爲不同的顏色,如下圖所示。點擊按鈕後,保存到MySQL,然後顯示CSS突出顯示
(我希望它做的是「一次點擊」)目前它只是更新了背景爲白色的數字)
注意:我只是要求您提供建議或某種方式來引導我朝着正確的方向前進,謝謝您。
沒有被點擊:
一旦點擊:
PHP/html表單:提交+1
<div class="up vote" name="voteUp" id="<?php echo $post_iD;?>">
<div class="wrapper">+<?php echo $VoteRate;?></div>
</div>
AJAX:更新按鈕
$(function()
{
$(".vote").click(function()
{
var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);
if (name=='voteUp')
{
$.ajax(
{
type: "POST",
url: "voting/up_vote.php",
data: dataString,
cache: false,
success: function(html)
{
parent.html(html);
}
});
}
return false;
});
});
up_vote.php:從阿賈克斯
$ip = $_SERVER['REMOTE_ADDR'];
if($_POST['id'])
{
$sth = $db->prepare("SELECT add_iP FROM PostsRating WHERE post_iD_fk = :id AND add_iP = :ip");
$sth->execute(array(':id' => $_POST['id'], ':ip' => $ip));
if($sth->fetchColumn() == 0)
{
$sth = $db->prepare("UPDATE posts set voteUp = voteUp+1 where post_iD = :id");
$sth->execute(array(':id' => $_POST['id']));
$sth = $db->prepare("INSERT into PostsRating (post_iD_fk, add_iP) VALUES (:id, :ip)");
$sth->execute(array(':id' => $_POST['id'], ':ip' => $ip));
} else {
$sth = $db->prepare("UPDATE posts set voteUp = voteUp-1 where post_iD = :id");
$sth->execute(array(':id' => $_POST['id']));
$sth = $db->prepare("DELETE FROM PostsRating WHERE post_iD_fk = :id AND add_iP = :ip");
$sth->execute(array(':id' => $_POST['id'], ':ip' => $ip));
}
$sth = $db->prepare("SELECT voteUp FROM posts WHERE post_iD = :id");
$sth->execute(array(':id' => $_POST['id']));
$row = $sth->fetch();
echo $row['voteUp'];
}
您*可能*要小心將該元素的ID設置爲數字值。不確定其含義,但是您不使用'id'作爲它的用途。相反,對於jQuery可以讀取數據值的情況,您可以使用'data-id =「123」'。這就是說,你的問題是什麼? –
@RobW,謝謝你的回答,我會把這個贓物帶進去。我用這個問題的粗體文本更新了這篇文章。 – iBrazilian
添加了答案,這應該有所幫助。你只需要添加一個新的CSS類,然後根據需要應用該類。可能還有其他方法可以做到這一點,但這是最基本的。 –