首页 > 解决方案 > jQuery td:包含

问题描述

所以在工作中,我必须浏览一个包含数千个用户的列表,然后选择一个我需要删除的复选框。长话短说,这是一个缓慢的过程。为了让事情变得更快,我使用控制台中的开发人员工具使这个脚本在 chrome 中运行。

var usernames = ["jimmy123"]; 
for(var i=0;i<usernames.length;i++)
{

    jQuery("td:containsExact("+usernames[i]")").find('[type=checkbox]').parent().attr('checked', true).css("background-color", "red");


}
var count = jQuery("[type='checkbox']:checked").length;
alert("Everything Returned Okay!");
alert(usernames.length);
alert(count + " Checkboxes Checked!");

问题是,假设一个用户创建了 3,因为他们忘记了他们的登录名“并不少见”,他们的用户名是:jimmy123 jimmy1234 jimmy12345

如果我只需要选中 jimmy123 旁边的框进行删除,我的脚本会选择所有 3 个,因为它们的用户名几乎相同。我尝试了一些过滤器,但结果是一样的。

后端截图

标签: javascriptjquery

解决方案


您可以filter()在此处使用函数来匹配中的确切文本,td然后标记选中的复选框。请参阅下面的脚本,您没有提供,HTML所以我添加了一个td包含用户名和复选框的示例表,您应该相应地更新脚本

$(function($) {
  var usernames = ["jimmy123", "omer"];
  for (var i = 0; i < usernames.length; i++) {
    $("tr>td").filter(function() {
      return $(this).text() == usernames[i]
    }).find('[type=checkbox]').attr('checked', true).css("background-color", "red");
  }
  var count = jQuery("[type='checkbox']:checked").length;
  console.log("Everything Returned Okay!");
  console.log("usernames.length" + usernames.length, usernames);
  console.log(count + " Checkboxes Checked!");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td><input type="checkbox">omer</td>
    <td><input type="checkbox">omer123</td>
    <td><input type="checkbox">omer6565</td>
    <td><input type="checkbox">omer63645</td>
    <td><input type="checkbox">omer021</td>
    <td><input type="checkbox">omer521</td>
    <td><input type="checkbox">jimmy123</td>
  </tr>
</table>

EDIT

id您可以为您的table发言分配一个my-table,然后将上面代码中的选择器从

$("tr>td").filter(function() {

到以下

$("#my-table tr>td").filter(function() {

当您HTML为正在使用脚本的用户列表添加 时,可能会建议确切的选择器。

EDIT2

根据你的 html 它应该是

$(function($) {
  var usernames = ["jimmy123", "omer"];
  for (var i = 0; i < usernames.length; i++) {
    $("#listContainer_datatable tr td").filter(function() {
      return $(this).text() == usernames[i]
    }).find('[type=checkbox]').attr('checked', true).css("background-color", "red");
  }
  var count = jQuery("[type='checkbox']:checked").length;
  console.log("Everything Returned Okay!");
  console.log("usernames.length" + usernames.length, usernames);
  console.log(count + " Checkboxes Checked!");
});

推荐阅读