Javascript 回调函数删除两个项,而不是单个项

Javascript 回调函数删除两个项,而不是单个项,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-从数据库中删除

这里出了什么问题:

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命名

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');
});

}

新的
.namesingle
是否也从数据库中删除了?@Michel,没有,在
php
端,一切都很好。另外,在重新加载页面后-
$('.namesingle')。eq(0)
-再次出现。它似乎可以工作。但是我认为-异步调用可以发生在回调函数外部,而不是内部。我们发送对象的id,然后服务器处理它一段时间,然后我们接收响应并调用回调函数。发送id和调用回调之间的时间可能足够长(取决于服务器、网络等)。没有人知道在前端这段时间发生了什么。