2

我有一个 html 表,在每一行上,我想添加一个删除按钮。当用户点击它时,我想做两件事:

1)从表中删除行。2)从被删除的行中提取数据 - 一个特定的单元格,然后使用该值对将从数据库中删除记录的函数进行 ajax 调用。该函数返回一个新的项目列表,然后我将使用它重新显示同一个表。

我在stackoverflow上找到了其他人的以下帖子: 如何从jQuery中的表中删除当前行?

所以我想这解决了第一点。但我不知道如何修改帖子所选答案中的代码以允许抓取行中的 id 值,然后进行 ajax 调用。

      <table class="table table-bordered table-striped"  id="databaserecords">
      <thead>
          <tr>
              <th>Id</th>
              <th>Name</th>
              <th>Status</th>
              <th>Voice</th>
              <th>Jumbo</th>
              <th>Mode</th>
              <th>&nbsp;</th>
          </tr>
      </thead>
      <tbody>

          <?php foreach ($dblist as $record): ?>
              <tr>          
              <td class ='recordId'><?php echo $record['Id'] ?></td>
              <td class ='recordName'><?php echo $record['Name'] ?></td>
              <td><?php echo $record['Status'] ?></td>
              <td><?php echo $record['Voice'] ?></td>
              <td><?php echo $record['Jumbo'] ?></td>
              <td class='recordmode'><?php echo $record['Mode'] ?></td>
              <td><button id="deleteRecord">Delete Record</button></td>
            </tr>
          <?php endforeach ?>


 <script>

    $('#deleteRecord').live('click', function()  {

                //get a count of all records. only allowed to delete if you have more than one record.
                var recCount = $('#databaserecords tbody tr').length;

                if (recCount > 1)
                {
                    $thevalueIwanttoSave = $(this).closest('recordId').val();
                                alert($thevalueIwanttoSave);
                            }

    });

 </script>

现在,警报总是说我的变量未定义。你能为我指出正确的方向吗?我确实知道如何编写 ajax 调用......我想我只需要帮助来从表中获取值。

谢谢。

4

5 回答 5

2

您的选择器不正确。

$thevalueIwanttoSave = $(this).parent().siblings('.recordId').text();

closest选择元素的最近父级(recordId不是父级/祖父级或按钮元素的..),并且您还错过了一个.for 类选择器。val用于获取/设置表单元素的值,对于您应该使用的 td 元素texthtml方法。另请注意,ID 必须是唯一的(您可以使用类代替)并且live不推荐使用方法,您可以使用on方法。

$('#databaserecords').on('click', '.deleteRecord', function() { 

    var recCount = $('#databaserecords tbody tr').length;

    if (recCount > 1) {
        var text = $(this).parent().siblings('.recordId').text();
        alert(text);
        // $(this).closest('tr').remove()
    }

});​
于 2012-10-01T13:59:38.713 回答
0
$thevalueIwanttoSave = $(this).parent('tr').find('.recordId').text();
于 2012-10-01T14:00:03.270 回答
-1

在删除按钮的属性中添加 ID,您可以通过 jQuery 获取它。

在你的 php 循环中:

<button class="deleteRecord" recordID="<?php echo $record['Id'] ?>">删除记录</button>

在 JQuery 上

$(".deleteRecord").click(function() {
    var id = $(this).attr("recordID");
    ...
});
于 2012-10-01T13:58:51.277 回答
-1

应该是.recordId,不是recordId

$thevalueIwanttoSave = $(this).closest('.recordId').val();
    alert($thevalueIwanttoSave);
于 2012-10-01T13:59:43.257 回答
-1

您需要使用 a.来选择具有类 recordId 的元素。还使用 text() 来获取值:

$thevalueIwanttoSave = $(this).siblings('.recordId').text();
alert($thevalueIwanttoSave);
于 2012-10-01T14:01:35.407 回答