我有一个链接,如果单击或从数据库中查询为真,则该图标将显示一个完整的心脏,并且信息将保存在数据库中,如下所示:
<a id="fav" href="#"><i <?if($fe == 1){?>class="faved"<?}else{?>class="fav"<?}?>></i></a>
$("#fav i.fav").click(function(){
fav= new XMLHttpRequest();
fav.open("GET", "http://test.php?u=<?=$user_id?>", true);
fav.send();
$("#fav i").removeClass('fav').addClass('faved');
});
$("#fav i.faved").click(function(){
fav= new XMLHttpRequest();
fav.open("GET", "http://test.php?u=<?=$user_id?>", true);
fav.send();
$("#fav i").removeClass('faved').addClass('fav');
});
目前它工作得很好,但我遇到的问题是,如果用户决定取消收藏一个页面,它要么保存另一条记录,要么根据其当前状态再次尝试删除。如何让它根据状态进行切换。例如,如果它不是收藏夹,则单击它会保存到数据库中,并且不刷新,再次单击它会从数据库中删除。
更新
我在链接中也有动作告诉我的 php 删除或保存记录。例如:(http://test.php?u=<?=$user_id?>a=1
保存)http://test.php?u=<?=$user_id?>a=2
(删除)
回答
基于@epascarello 的回答。
$("#fav").on("click", "i.fav", function(){
var icon = $(this);
var makeFavorite = icon.hasClass("fav");
$.post("http://test.php&u=<?=$user_id?>&a=1",{isFav:makeFavorite}, function(){
icon.toggleClass("fav").toggleClass("faved");
});
});
$("#fav").on("click", "i.faved", function(){
var icon = $(this);
var delFavorite = icon.hasClass("faved");
$.post("http://test.php&u=<?=$user_id?>&a=2",{isFav:delFavorite}, function(){
icon.toggleClass("faved").toggleClass("fav");
});
});