.toggleClassを動作させるのに少し問題があります。私はjavascriptに非常に新しいので、ここで本当にシンプルな何かを逃した場合、私を許してください。私はユーザーが画像や投稿のようなものを好きになるようにしたい。クリックすると、追加/削除しているかどうかによって、赤/黒に変わるはずの小さな心臓アイコンがあります。 .toggleClassとは別にすべてが機能します。誰かが間違っているところを指摘できますか?AjaxリクエストのtoggleClassが機能しない
のindex.php
<div class="heart-box">
<?php
//Check if user has fav'd the image..
$hasFav = db::getInstance()->query("SELECT * FROM favourites WHERE userID = ? AND img_id = ?", array($the_user, $img_id));
$action = $hasFav->results() ? 'unfav-heart' : 'fav-heart';
?>
<div class="<?php echo $action; ?> fa fa-heart" id="<?php echo $img_id; ?>" ></div>
</div>
スクリプト
$(document).ready(function(){
//add to favourites...
$('.fav-heart').click(function(){
var img_id = $(this).attr('id');
$.ajax({
url: 'favourites.php',
type: 'post',
async: false,
data:{
'fav' : img_id
},
success:function(){
$(img_id).toggleClass("unfav-heart");
}
});
});
// remove from favourites...
$('.unfav-heart').click(function(){
var img_id = $(this).attr('id');
$.ajax({
url: 'favourites.php',
type: 'post',
async: false,
data:{
'fav' : img_id
},
success:function(){
$(img_id).toggleClass("fav-heart");
}
});
});
});
ページがレンダリングされる前にバックエンドでPHPを使用してクエリを実行するのは、フロントエンド –
Uh @ Matt.kでクエリを実行しているBADプラクティスです。 –
@Jayそれを見てもそれはまだ悪い考えではありませんか? –