javascript - 无法将类添加到单击的元素
问题描述
我有使用 JQuery 和 AJAX 将产品添加到收藏夹的代码,我的 JavaScript 代码如下所示:
$('.product-item-btn-fav').on('click', function(e){
b = $(this).data("product_number");
$.ajax({
type: "POST",
url: domain + "/ajax/favorite/" + b,
success: function (a) {
var d = parseInt($(a).find("#result").html());
if (d == 1) {
$(this).addClass("active");
} else {
if (d == -1) {
$(this).removeClass("active");
}
}
}
})
});
和 HTML:
<a class="product-item-btn-fav" data-product_number="[%item.product_number%]">
<svg class="svg-icon-heart-filled">
<use xlink:href="[%domain.url_media%]/images/svg-sprite.svg#svg-icon-heart-filled"></use>
</svg>
</a>
此代码有效,它将产品添加到后端的收藏列表中(因此 AJAX 有效并返回有效结果 1 或 -1),但此调用$(this).addClass("active");
不会将 css 类添加到<a>
标记中。
解决方案
你必须存储$(this)
在变量中a
$('.product-item-btn-fav').on('click', function(e){
b = $(this).data("product_number");
var _t = $(this);
$.ajax({
type: "POST",
url: domain + "/ajax/favorite/" + b,
success: function (a) {
var d = parseInt($(a).find("#result").html());
if (d == 1) {
_t.addClass("active");
} else {
if (d == -1) {
_t.removeClass("active");
}
}
}
})
});
推荐阅读
- sql - 请求 mysql,对于同一请求,排名结果不同
- xslt - xslt for substring before and using or condition
- jenkins - 如何创建脚本外壳以在 TestNg 中执行类名 作者 jenkins
- sql-server - Azure 数据工厂无法连接到 Azure 云服务器
- android - 使用 Volley 时如何查找图片上传失败的原因?
- php - 通过查找“id”将数据插入到关系中
- r - 如何在 R 中通过 1000 次 Bootstrap 模拟选择 10%、20%、30% 随机样本?我的做法是对的吗?
- python-3.x - 通过检查 python 数据框中的多个 elif 语句来创建新列
- javascript - 忽略两个正则表达式匹配之间的字符串
- php - 如何以编程方式设置 gravatar 图片?