jquery - 如何找到附加了特定类的 tr 并获取每个 td 的详细信息 - jquery

标签 jquery html css checkbox

请检查这个 fiddle https://jsfiddle.net/shaswatatripathy/y7jqb5hp/12/

HTML

<table id="tableID">
  <tr onclick="getdetails(this)">
  <th>checkbox</th>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr onclick="getdetails(this)">
  <td><input name="eachRow" type="checkbox"/> </td>
    <td>Alfreds </td>
    <td>Maria </td>
    <td>Germany</td>
  </tr >
  <tr onclick="getdetails(this)">
   <td><input name="eachRow" type="checkbox"/> </td>
    <td>Centro </td>
    <td>Francisco </td>
    <td>Mexico</td>
  </tr>
  <tr onclick="getdetails(this)">
   <td><input name="eachRow" type="checkbox"/> </td>
    <td>Ernst </td>
    <td>Roland </td>
    <td>Austria</td>


</table>

CSS

table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

.highlightRowSelected
{
  background-color:#e2e2e2;
}

查询

function getdetails(row) {
 $("#tableID tbody tr").each(function () {        
        $(this).removeClass("highlightRowSelected");        
    });    
    $(row).addClass("highlightRowSelected");


        }

修改 getdetails(row) 的内容使得

1.每当一行被点击时,相应的复选框就会被勾选

2.可以勾选其他行的复选框,但是那个勾不应该是一行点击(重要),显然不应该得到 highlightRowSelected 类

  1. 如果单击该行并勾选了复选框(按第 1 点),则单击该复选框不应取消选中该复选框

只允许jquery

最佳答案

$('#tableID input[type="checkbox"]').on('click', function(event){
  // if tr has class "highlightRowSelected" do not let the click on the checkbox happen
  if($(this).closest('tr').hasClass('highlightRowSelected')) {
    event.preventDefault();
    event.stopPropagation();
    return;
  }
  
  // if click on checkbox do not go for click on the <tr>
  // which also happend, because the checkbox is inside <tr>
  event.stopPropagation();
});

$('#tableID tr').on('click', function(){
  if($(this).hasClass('highlightRowSelected')) {
      $(this).find('input[type="checkbox"]').prop('checked', false);
      $(this).removeClass("highlightRowSelected");
  } else {
      // check if there is already a class highlightRowSelected
      // if so return (means, skip rest of code)
      // so in whole table only one .highlightRowSelected is allowed
      if($(this).closest('table').find('.highlightRowSelected').length >= 1){
          return;
      }
      $(this).find('input[type="checkbox"]').prop('checked', true);
      $(this).addClass("highlightRowSelected");
  }
});
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

.highlightRowSelected
{
  background-color:#e2e2e2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="tableID">
  <tr>
  <th>checkbox</th>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
  <td><input name="eachRow" type="checkbox"/> </td>
    <td>Alfreds </td>
    <td>Maria </td>
    <td>Germany</td>
  </tr >
  <tr>
   <td><input name="eachRow" type="checkbox"/> </td>
    <td>Centro </td>
    <td>Francisco </td>
    <td>Mexico</td>
  </tr>
  <tr>
   <td><input name="eachRow" type="checkbox"/> </td>
    <td>Ernst </td>
    <td>Roland </td>
    <td>Austria</td>


</table>

关于jquery - 如何找到附加了特定类的 tr 并获取每个 td 的详细信息 - jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43817556/

相关文章:

jquery - HTML 范围 slider 和 jQuery?

html - 如何使用 CSS 调整图像的大小,使其在每一侧均等裁剪

jquery - Jquery 的 Bayaux 协议(protocol)实现

html - Div 高度 100% 到页脚不起作用

javascript - 选中单选按钮时更改表格单元格背景颜色

php - 如何使用正则表达式替换字符串的外部内容?

html - 使用CSS3在页面右下角定位固定元素

html - 如何在 IE7 模式下保持这两个按钮之间的空间?

javascript - 单选按钮列在使用 JqGrid 的该单选列的所有网格行中相互排斥?

javascript - 仅在 jQuery 中查找第一个嵌套树?