【问题标题】:How to delete div inside tbody?如何删除tbody中的div?
【发布时间】:2016-09-13 00:01:11
【问题描述】:

实际上,我在tbody 中使用了div 用于不同的dialog box。这就是我将div 放入tbody 的原因。但是我想知道单击时如何删除(删除)关联 div?在这里,我点击了表格进行了测试!

<?php
for($i=0;$i < 3;$i++){
?>    
<table id="row_<?= $i ?>">
    <tbody>
        <tr><td>sdf</td><td>sdf</td></tr>
        <tr><td>sdf</td><td>sdf</td></tr>
        <tr><td>sdf</td><td>sdf</td></tr>
        <tr><td>sdf</td><td>sdf</td></tr>
        <div>Inder Div(Dialog)</div>
    </tbody>
</table>
<?php
}
?>
<script type="text/javascript">
    $("table").click(function(){
        console.log($(this).attr('id')); // display table id
        $(this).find("div").remove();//not working
        $(this).closest("div").remove(); //not working
    });
</script>

在我的项目中,当我单击 Action 按钮时,我使用了上述格式并打开对话框,如下图所示......所以需要删除对话框

【问题讨论】:

  • 无效标记。
  • 您的 JS 不起作用,因为您的 HTML 无效。您不能将 div 作为 tbody 的子代。如果您在 DOM 检查器中检查 div,您会发现它实际上是在 外部 tbody 渲染的,这就是 find('div').remove() 不起作用的原因。您的第一项工作是修复 HTML。
  • 如果您必须将 div 作为表格的一部分 - 使用 &lt;tr id="killme"&gt;&lt;td colspan=2&gt;&lt;div&gt; ... &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; - 然后您可以查找 #killme 并删除该行 - 效果相同
  • 那么我应该为每个表中的对话框使用什么@RoryMcCrossan
  • 您可以使用div,只需将其放在table 之前/之后,或者如果您必须将其放在表格中,则将其放在td

标签: jquery html html-table


【解决方案1】:

总结回答这个问题的cmets:

代码不起作用,因为 HTML 无效。浏览器不会将divtbody 一起呈现,而是将div 移出表格。 .find('div') 将返回零结果,因为 div 不再在表格中。

解决方案:div 移动到table 之后,浏览器无论如何都会这样做。要访问此 div,请使用 jQuery 中的 next() 方法。

$(function(){
  $('table').click(function(event){
    $(this).next('.dialog').remove();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table>
  <tr><td>row1.col1</td><td>row1.col2</td></tr>
</table>
<div class="dialog">Hello world!</div>

【讨论】:

    【解决方案2】:

    在 chrome 等主流浏览器中,div 元素不会呈现在 table 标签内,因此只需使用:

    $(this).prev().remove();
    

    由于 div 标签在 chrome 中呈现在 table 标签之前

    在表格标签中保留除表格元素之外的任何其他内容是不好的做法

    【讨论】:

      【解决方案3】:

      请尝试通过下面的编码

      <?php
      for($i=0;$i < 3;$i++){
      ?>  
      <table id="row_<?= $i ?>">
      <tbody>
          <tr><td>sdf</td><td>sdf</td></tr>
          <tr><td>sdf</td><td>sdf</td></tr>
          <tr><td>sdf</td><td>sdf</td></tr>
          <tr><td>sdf</td><td>sdf</td></tr>
          <div id="div_<?= $i ?>">Inder Div(Dialog)</div>
      </tbody>
      </table>
      <?php
      }
      ?>
      <script type="text/javascript">
      $("table").click(function(){
          console.log($(this).attr('id')); // display table id
          $( "#div_"+ this.id ).remove(); //Call by div id
          //$(this).find("div").remove();//not working
          $(this).closest("div").remove(); //not working
      });
      </script>  
      

      【讨论】:

      • 请告诉我们您所做的更改以及应该如何回答问题。
      • 我知道了Uncaught TypeError: Cannot read property 'remove' of null
      • 添加表格内的div id。并在点击函数中调用该 id 进行删除
      • 然后替换下面的编码为删除行。 $( "#div_"+ this.id ).remove();
      猜你喜欢
      • 2017-10-15
      • 2020-11-26
      • 1970-01-01
      • 2016-01-30
      • 2019-03-01
      • 1970-01-01
      • 2016-04-28
      • 2021-08-21
      • 1970-01-01
      相关资源
      最近更新 更多