javascript - 在 jQuery 中使用 ReplaceWith() 时出现奇怪的行为

标签 javascript jquery html

我在使用 jQuery 时遇到一些问题。我正在尝试执行 AJAX 请求,并在该请求给出正确响应时更改单击的元素。

我的 jQuery:

$(document).on('click', '.add-to-check', function (e) {
    e.preventDefault();
    var url = $(this).attr('href');
    $.ajax({
        url: url,
        type: "GET",
        success: function (response) {
            var result = jQuery.parseJSON(response);
            if (result.status == 'success') {
                $(e.target).replaceWith('<i class="fa fa-check"></i>');
            } else if (result.status == 'failure') {
                // failure
            }
        },
    });
    return false;
});

我的 HTML:

<a class="btn btn-sm btn-primary pull-left add-to-check" href="/tasks/check/1235"><i class="fa fa-close"></i></a>

但这并不能正常工作。当我单击该按钮时,大多数时候该按钮会按应有的方式消失,并显示一个复选图标。这就是它应该工作的方式。

但是,有时:复选标记会显示,但它仍然是一个按钮。我不明白这是为什么。

最佳答案

尝试这样:

$(document).on('click', '.add-to-check', function (e) {
e.preventDefault();
var $this = $(this);
var url = $this.attr('href');
$.ajax({
    url: url,
    type: "GET",
    success: function (response) {
        var result = jQuery.parseJSON(response);
        if (result.status == 'success') {
            $this.replaceWith('<i class="fa fa-check"></i>');
        } else if (result.status == 'failure') {
            // failure
        }
    },
});
return false;

});

关于javascript - 在 jQuery 中使用 ReplaceWith() 时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700438/

相关文章:

php - 使用 $.ajax 和 php 的进度条

html - CSS 忽略@font-face 声明

html - 响应式网页设计,缩放图像;节省带宽?

javascript - Jquery 无法与phoneGap 一起使用

JavaScript:如何将用户输入与数组进行比较?

javascript - 如何在带有 Javascript 源的 Firefox 扩展(XUL 文件)中使用 SQLite?

javascript - 页面重新加载后 css 类处于事件状态

javascript - 当没有匹配的后代元素时隐藏父元素

php - 使用 PHP 和 MySQL 的基本但安全的登录系统遇到问题

javascript - 滚动位置等于 div 内容高度时的 jQuery 警报