jquery 选择器中的 id 冲突?

Clashing of id in jquery selector?

我目前正在尝试使用 AJAX 和 jquery 编辑和更新 table。 table 结构将是 title linked 到许多 criteria 而他们 link 通过 title_id。但是,当我要在标题下添加新条件时,我发现 jquery select 或 select 共享相同 ID 的其他空白条件字段将保留关于空白字段的警报。有没有专门指出要添加的确切单元格?

(每个条件都有特定的数据属性指向相关标题,如下所示:)

行详细信息:

<tr><td rowspan="'.$rowspan.'" class="title" data-title-id="'.$titleID.'" 
contenteditable>'.$titleDesc.'</td>
<td id="criteriaDesc" data-title-id="'.$titleID.'" contenteditable></td>
<td><button type="btn_add" id="btn_add_crit" data-title-id="'.$titleID.'" class="btn btn-md btn-success" title="Add criteria">+</button></td></tr>

jquery代码:

        $(document).on('click','#btn_add_crit',function(){
        var criteria = $('#criteriaDesc').text();
        var titleID = $(this).data('title-id');
        if(criteria == '')
        {
            alert("The text is "+criteria);
            return false;
        }               

        $.ajax({
            url:"critInsert.php",
            method:"POST",
            data:{criteria:criteria,titleID:titleID},
            dataType:"text",
            success:function(data){
                alert(data);
                fetch_data();
            }
        })
    });

table:

已尽力解释我的问题并寻求帮助!

以下是如何从单元格中获取 criteriaDesc 值,对应于单击的“+”按钮。

$(".btn_add_crit").click(function() {
  console.log($($(this).parents()[1]).find(".criteriaDesc").text());
});

从上面的代码可以看出。您可以并且需要 将您的重复 ID 更改为 类。

首先您需要了解所有 ID 必须是唯一的。如果您忽略它,您的标记仍然可以正常加载,但代码将无法运行。 jQuery(以及其他 JS 库)和纯 JS 都不能 select 具有相同 ID 的第二个、第三个等等元素,因为他们几乎不相信,只能有一个。

其次。您应该多研究一下 jQuery 的工作原理。如果您有很多按钮和相应的文本字段,您不能只为所有这些字段编写 selector 并希望 select 编辑正确的一个。例如,在我的回答中,按钮和文本字段之间的连接是通过 parents() 函数实现的。