javascript - 回调函数删除两项而不是一项

标签 javascript

这里有什么问题:

function deluser() {
    var id = $('.nameact').attr('data-id');
    $.post('users-pro-del.php', {id}, function(data) {
        $('.nameact').remove();
        $('.namesingle').eq(0).addClass('nameact');
    });
}

users-pro-del.php - 从数据库中删除用户。

所以我想从屏幕上删除相应的项目
$('.nameact').remove();

并将 active 状态赋予另一个(第一个)项目: $('.namesingle').eq(0).addClass('nameact');

有时它工作正常。

但更常见的是 - $('.namesingle').eq(0) 也被删除了!

正如我在控制台中看到的那样 - 每个时刻只有一个 .nameact

有什么帮助吗?

最佳答案

Ajax 具有异步特性。 $.post 之前的 id = $('.nameact') 可能与 ajax 请求之后的 $('.nameact') 不同。最好到处通过 Id 引用 nameact。

function deluser() {
var id = $('.nameact').attr('data-id');
console.log('id to delete: ' + id);
$.post('users-pro-del.php', {id}, function(data) {
    $('.nameact[data-id="' + id + '"]').remove(); // to be sure we delete the same object in php and JS
    console.log('deleted id: ' + id);
    $('.namesingle').eq(0).addClass('nameact');
});

关于javascript - 回调函数删除两项而不是一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50894395/

相关文章:

javascript - 从 json 字符串中的 json 中提取值

javascript - 如何在使用.stop时让.slideDown和.slideUp完成动画?

javascript - Oracle Apex 5.1 在按下按钮后运行 PL/SQL 进程

javascript - HTML5 Canvas createPattern API

javascript - Rails 4 - jQuery 和 bootstrap 的顺序是什么?

javascript - 我可以通过什么方式(如果有的话)获取 javascript 中匿名函数闭包的引用?

javascript - Jest --runTestsByPath 两个或多个不同的路径

Javascript:验证图像的外部 URL

javascript - 在浏览器中自动完成 ="off"强制

Javascript 表单验证 - 只有第一个字符必须是数字