我怎么知道我点击了哪个链接?

时间:2019-05-27 06:51:18

标签: javascript php jquery html bootstrap-modal

我正在部署一个表,您可以在其中编辑列。为此,在每个单元格中都有一个<a>,以显示一个模式来更改数据库中的que值并刷新页面。到目前为止,它很好地出现了模态,但是就目前而言,模态不知道单击了哪个链接。我需要知道它才能获得该行的id。调用模式(“ Guardar”)的最后一个按钮的JQuery方法需要通过AJAX调用php脚本,并发送行的ID(以生成UPDATE语句)和列的新值。

我尝试使用JQuery中的方法closest()find(),并在data-id属性中设置行的ID。

这是我通过PHP部署表的地方(代码简化为一列,以更好地阅读和理解它)

if($resHitos->num_rows>0){
    while ($columna = mysqli_fetch_assoc($resHitos)) {
        $id=$columna['id'];
        echo "<tr data-id='$id'>";
        echo "<td style='text-align:center'><p><a data-toggle='modal' data-target='#modalEditHito'>".$columna['descripcion']."</a></p></td>";
        echo "</tr>";
    }
}

这是模式

<div class="modal fade" id="modalEditarHito" role="dialog">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Editar objetivo</h4>
            </div>
            <div class="modal-body">
                <div class="form-group">
                    <label for="newObjetivo">Objetivo</label>
                        <textarea class="form-control" rows="5" id="editObjetivo"></textarea><br>
                 </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal" onclick="editDescripcionHito()">Guardar</button>
                <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
            </div>
        </div>
    </div>
</div>

预期结果是看到在单击的确切行中输入的新值。

2 个答案:

答案 0 :(得分:1)

您可以使用数据属性来唯一标识行。或者您可以像这样简单地添加id属性

 echo '<tr data-id=".$columnna['id'].">';

您应该更改此行 echo "<td style='text-align:center'><p><a data-toggle='modal' data-target='#modalEditHito'>".$columna['descripcion']."</a></p></td>";

echo "<td style='text-align:center'><p><a data-toggle='modal' data-target='#modalEditHito".$columnna['id']."'>".$columna['descripcion']."</a></p></td>";

答案 1 :(得分:1)

在显示的模式上添加侦听器事件。

$(document).on('show.bs.modal','#modalEditHito', function (e) {
  var $invoker = $(e.relatedTarget);
  //this may help
  //var tr = $invoker.closest('tr');
  //var tr_id = tr.attr("data-id");
});