javascript - 无法将类添加到单击的元素

标签 javascript jquery html ajax

我有使用 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");
                }
            }
        }
    })
});

关于javascript - 无法将类添加到单击的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269184/

相关文章:

html - 使用 font awesome 将工具栏与搜索文本框对齐

javascript - 使用第三方库中的异步函数调试 JavaScript?

javascript - 捕获开始标签但不捕获结束标签

javascript - 使用 JS 或其他方法单击后更改嵌入式 youtube 播放器的不透明度

javascript - 保留第一个 div 框并根据搜索模式删除其余部分

javascript - 无法从 +/- 框 DOM 元素中提取 "value"属性

javascript - TypeError : $ . 查找不是函数

javascript - 如何在现有父指令元素和子指令元素之间动态嵌套指令元素?

javascript - jQuery-UI slider 背景

html - 搜索框占位符以我的方式向左对齐