为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据每个 ID 的 jquery 计数阻止用户删除表中的所有 tr?

如何根据每个 ID 的 jquery 计数阻止用户删除表中的所有 tr?

PHP
qq_笑_17 2022-01-08 20:12:39
我有一个显示数据列表的表格。用户可以动态删除行。我也有 jquery 来帮助我计算每个 unqiue trip id 的出现次数。我想阻止用户删除链接到特定行程 ID 的所有行。例如,如果用户删除trip id 35KH1 行直到它保持为1,我wan jquery 来停止从beeing 进行的删除。我怎样才能做到这一点?我的数据表的图像和一个显示每个唯一 ID 出现次数的弹出框下面是我的表格代码(示例):<table id="timelist">    <tr>        <th>Trip ID</th>        <th>Delete</th>    </tr>    <tbody>        <tr>            <td>35KH1</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH1</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH1</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH1</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH1</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH1</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH2</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH2</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH3</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>        <tr>            <td>35KH3</td>            <td><a href='#' class='deleterow'>Delete Row</a></td>        </tr>    </tbody></table>这是我的jQuery代码:/********count number of occurence per unqiue ID***********/function count(){    var tripids = {};    $('#timelist tr td:nth-child(1)').each(function(r, val){        var tripid = $(this).text();        if(tripid in tripids){            tripids[tripid] = tripids[tripid] + 1;        }else{            tripids[tripid] = 1;            }    });
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

将<td>每个的第一个值<tr>作为相同的类,<tr>然后修改删除代码,如下所示:-


$(document).on('click', '.deleterow', function() {

  var classofRow = $(this).closest('tr').attr('class');

  var rowlength = $('table').find('.'+classofRow).length;

  if(rowlength > 1){

    $(this).closest('tr').remove();

  }else{

    alert("can't remove single record for "+classofRow);

  }

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table id="timelist">

  <tr>

    <th>Trip ID</th>

    <th>Delete</th>

  </tr>

  <tbody>

    <tr class="35KH1">

      <td>35KH1</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH1">

      <td>35KH1</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH1">

      <td>35KH1</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH1">

      <td>35KH1</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH1">

      <td>35KH1</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH1">

      <td>35KH1</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH2">

      <td>35KH2</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH2">

      <td>35KH2</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH3">

      <td>35KH3</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

    <tr class="35KH3">

      <td>35KH3</td>

      <td><a href='#' class='deleterow'>Delete Row</a></td>

    </tr>

  </tbody>

</table>


注意:- 正如@Barmar 所说:


.attr('class')如果您想添加其他可能用于 . 的类,使用会使事情变得困难。CSS使用类似的东西可能会更好data-trip-id="35KH1"


代码示例:- https://jsfiddle.net/bhn5gftc/1/


查看完整回答
反对 回复 2022-01-08
?
函数式编程

TA贡献1807条经验 获得超9个赞

我假设这些行是动态创建的。如果这是真的,那么您应该向包含三标识的按钮添加一个数据属性:


<tr>

    <td>35KH1</td>

    <td><a href='#' class='deleterow' data-tripid='35KH1'>Delete Row</a></td>

</tr>

现在您可以禁用基于tripid的按钮:


for(var tripid in tripids){

    result += tripid + ':' + tripids[tripid] + '\n';

    number += tripids[tripid]

    if (tripids[tripid] === 1) {

        $('a[data-tripid=' + tripid + ']').attr('disabled', true);

    }

}


查看完整回答
反对 回复 2022-01-08
  • 2 回答
  • 0 关注
  • 275 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号