javascript - 用户点击后让like按钮改变颜色
问题描述
如果每个元素没有 2 个相同的 id,这对我来说并不难解决
我在数据库中有自己的 id 的图像,这是类似的按钮
<a id='$id' class='fas fa-angle-up $voteup' onclick='vote(\"up\",this);'></a>
这是不喜欢的按钮
<a id='$id' class='fas fa-angle-down $votedown' onclick='vote(\"down\",this);'></a>
在 php 中,我已经使两个按钮 ids = 相同,因为它是图像的唯一 id,后者在数据库中基于该 ID,它通过此代码发布到数据库
function vote(vote, val) {
var params = {"vote": vote, "id": val.id};
$.ajax({
data: params,
url: 'vote.php',
type: 'post',
success: function (response) {
// code
}
});
}
其他人告诉我,对 2 个元素使用相同的 id 是错误的
我可以使两个 id 不一样,但是我需要将该 id 存储在其他地方,然后通过代码获取它,我不知道该怎么做,所以这对我来说更容易
解决方案
ID 必须是唯一的。使用一个类或两个不同的 ID -
$("a.$voteup")
和
$("a.$votedown")
应该管用
但这是推荐的
function setActive($but) {
$(".vote").removeClass("active");
$but.addClass("active")
}
$(".vote").on("click", function(e) {
e.preventDefault();
var $but = $(this);
var params = {
"vote": this.id === "voteup" ? "up" : "down",
"id": $(this).closest("div").attr("id")
};
setActive($but); // remove when ajax is available
console.log("about to vote",params)
$.ajax({
data: params,
url: 'vote.php',
type: 'post',
success: function(response) {
setActive($but);
},
error: function(jxhr) { console.lig("error", jxhr)
}
});
});
#voteup.active { background-color: green }
#votedown.active { background-color: red }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" crossorigin="anonymous" />
<div id="$id">
<a id='voteup' class='fas fa-angle-up vote'></a>
<a id='votedown' class='fas fa-angle-down vote'></a>
</div>
推荐阅读
- printf - 在 logstash 的 sprintf 语法中使用 sprintf 语法
- sas - SAS - 为数据集采样创建计数器变量
- java - 我们可以隐式地使 Spring Boot Test 和 Spring Test 重置模拟吗?
- mfc - COM+ 应用程序在某些未知情况下才会继续运行
- python - 通过张量流对整数数据进行分类
- sql - 如何将虚拟数据填充到现有表中?
- c# - 如何在 Dapper .Query<>() 中添加新的 PropertyType
- javascript - 重构类型脚本方法
- c - Windows 7 上的 Cygwin Control+D 不发出 EOF 信号
- c++ - 多个枚举值的一种模板特化