javascript - 如何使用jquery在html中选择带有嵌套表的特定元素

标签 javascript jquery html this

我搜索并尝试了一些 jquery 选择器(例如 :last),但我不知道应该使用哪个选择器。我应该使用 this还?问题是,我想添加一个row嵌套 <table> 内部,如果我单击添加按钮,则唯一特定的 <table>可以添加row
这是我的示例代码:

index.html =================================================== =======================

<table>
    <thead>
        <tr>
           <th>Name</th>
           <th>Age</th>
           <th>Address</th>
           <th>Gender</th>
           <th>My Items</th>
        </tr>
    </thead>
    <tbody>
       <tr>
          <td>Some Name</td>
          <td>30</td>
          <td>My Address</td>
          <td>Male</td>
          <td>
             <table>
                <thead>
                  <tr>
                     <th>Brand</th>
                     <th>Quantity</th>
                     <th>Size</th>
                     <th>Color</th>
                  </tr>
                </thead>
                <tbody>
                  <tr>
                     <td>Yamaha</td>
                     <td>30</td>
                     <td>Large</td>
                     <td>Black</td>
                  </tr>
                </tbody>
             </table>
             <button id="AddItem">Add Item</button>
          </td>
       </tr>
    </tbody>
</table>
<button id="AddCustomer">Add Customer</button>
  • 如果我点击Add Item , 在 Yamaha 项目下方添加 1 row()。
  • 如果我点击Add Customer , 在某些名称下方添加 1 row()。



myJS.js 代码: =================================================== =======================

$("#addItem").on('click', function(e) {
    $('tr:last').after("Added Row for Items.");
    e.preventDefault();
});
<br>

$("#addCustomer").on('click', function(e) {
    $('tr:last').after("Added Row for Customer.");
    e.preventDefault();
});

最佳答案

我添加了<tfoot>对于tr.customertable.cart并将按钮分别放置在其中。它需要类和 ID 来使复杂的任务变得更加容易。

片段

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1, user-scalable=no">
  <title>PO</title>

  <style>
    table,
    td,
    th {
      border: 1px solid black;
    }
  </style>
</head>

<body>
  <header>
    <form id="panel">

    </form>
  </header>
  <section id="I">


    <table id='PO1' class="purchaseOrder">
      <thead>
        <tr>
          <th>Name</th>
          <th>Age</th>
          <th>Address</th>
          <th>Gender</th>
          <th>Cart</th>
        </tr>
      </thead>
      <tbody>
        <tr id='C1' class='customer'>
          <td>Some Name</td>
          <td>30</td>
          <td>My Address</td>
          <td>Male</td>
          <td>
            <table class='cart'>
              <thead>
                <tr>
                  <th>Brand</th>
                  <th>Quantity</th>
                  <th>Size</th>
                  <th>Color</th>
                </tr>
              </thead>
              <tbody>
                <tr id='item1' class='item'>
                  <td>Yamaha</td>
                  <td>30</td>
                  <td>Large</td>
                  <td>Black</td>
                </tr>
              </tbody>
              <tfoot>
                <tr>
                  <td colspan='3'></td>
                  <td>
                    <button class="addItem">Add Item</button>
                  </td>
                </tr>
              </tfoot>
            </table>

          </td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td colspan='3'></td>
          <td>
            <button class="addCustomer">Add Customer</button>
          </td>
        </tr>
      </tfoot>
    </table>


  </section>
  <footer>&nbsp;</footer>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

  <script>
    $(".addItem").on('click', function(e) {
      $(this).closest('table').find(".item:last").after('<tr class="item"><td>New item</td><td></td><td></td><td></td></tr>');
    });


    $(".addCustomer").on('click', function(e) {
      var newCustomer = $('.customer:last').after('<tr class="customer"><td>New Customer</td><td></td><td></td><td></td></tr>');
      var newCart = $('.cart:first').clone(true, true).wrap('td');
      newCart.find('tbody').html("").html('<tr class="item"><td>New Item</td><td></td><td></td><td></td></tr>');
      $('.customer:last').append(newCart);
      e.preventDefault();
    });
  </script>
</body>

</html>

关于javascript - 如何使用jquery在html中选择带有嵌套表的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423049/

相关文章:

javascript - 将加载了 Ajax 的插件保存到缓存

jQuery Ajax 调用 servlet 生成的 html 响应

javascript - jquery 一个一个加载div,不自动循环

javascript - "TypeError: Cannot destructure property ' 产品 ' of ' 产品详细信息 ' as it is undefined"

jquery - 基本的toggle()从下到上滑动问题

html - 在 IE 中点击导航链接向左移动

javascript - onkeydown/onkeypress html 和 javascript

html - 根据特定容器更改弹出宽度

javascript - jQuery 美元符号未定义

javascript - 根据链接填充 html 容器