You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

$(this).nextAll("#status").eq(0).text("Deleted")无法生效的问题求助

问题分析与解决方案

首先,你的代码有两个关键问题导致设置文本失败:

1. 重复使用唯一ID属性

在PHP循环中,你给每个<span>都设置了id='status',但HTML规范里ID必须是页面唯一的。浏览器在查找ID时只会返回第一个匹配的元素,这会导致后续的status元素无法被正确选中。

2. DOM遍历方向错误

看你的HTML结构,每个.delete按钮是在<span id='status'>的后面:

<div class='image'>
  <!-- 其他span -->
  <span id='status'></span>
  <button class='delete'>Delete</button>
</div>

而你用的$(this).nextAll("#status")是查找按钮之后的同级元素,但status明明在按钮前面,自然找不到任何元素。


修正步骤:

第一步:修改PHP代码,将ID改为Class

把重复的id='status'改成class='status',保证选择器的正确性:

$sql = "SELECT * FROM `upload_img`"; 
$result = mysqli_query($db, $sql); 
while ($row = mysqli_fetch_assoc($result)) { 
    echo "<div class='image' data-id='".$row['id']."'><br>"; 
    echo "<span><strong>Image title</strong>: ".$row['image_title']."</span><br>"; 
    echo "<span><strong>User of image</strong>: ".$row['user_name']."</span><br>"; 
    echo "<span><strong>Image file name</strong>: ".$row['image']."</span><br>"; 
    // 把id改成class
    echo "<span class='status'></span>"; 
    echo "<button class='delete' data-id='".$row['id']."'>Delete</button><hr>"; 
    echo "</div>"; 
} 

第二步:修正JS的DOM查找逻辑

因为按钮和status在同一个.image容器里,我们可以先找到父容器,再选中里面的.status,或者直接用prev()(因为status是按钮的前一个同级元素):

方法一(更健壮,适合结构可能变化的情况):

$(".delete").on("click", function() { 
    var id = $(this).data("id"); 
    // 先找到父级的.image容器,再找里面的.status
    $(this).closest(".image").find(".status").text("Deleted"); 
    $.post("adminServer.php", { id: id }, function(data) { 
        data = JSON.parse(data); 
        alert(data); 
    }); 
});

方法二(结构固定时可用):

$(".delete").on("click", function() { 
    var id = $(this).data("id"); 
    // 直接找前一个同级元素(status)
    $(this).prev(".status").text("Deleted"); 
    $.post("adminServer.php", { id: id }, function(data) { 
        data = JSON.parse(data); 
        alert(data); 
    }); 
});

这样修改后,点击删除按钮就能正确把对应容器里的status文本设置为"Deleted"了。


内容的提问来源于stack exchange,提问作者Stupid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:57:07