Jquery 如何选择特定表的元素?

Jquery 如何选择特定表的元素?,jquery,Jquery,我有一个页面,由多个具有唯一id的表组成,每个表包含一个表单。 如何获取单击提交按钮的表的id? 我最终希望使用该id作为选择器来在中显示数据。 Jquery $(document).ready(function() { $('.myForm').submit(function(e) { var data = $('table').attr('id'); alert(data); e.preventDefault()

我有一个页面,由多个具有唯一id的表组成,每个表包含一个表单。 如何获取单击提交按钮的表的id? 我最终希望使用该id作为选择器来在中显示数据。

Jquery

  $(document).ready(function() {
      $('.myForm').submit(function(e) {
          var data = $('table').attr('id');
          alert(data);

          e.preventDefault();

      });

  });
html

<form id="myForm" class="myForm" action="" method="post">
    <table id="mytable1">
        <tbody>
            <tr>
                <td>
                    my table 1
                </td>
            </tr>
        </tbody>
    </table>
    <button type="submit" name="submit3">Submit

</button>
</form>
<form id="myForm" class="myForm" action="" method="post">
    <table id="mytable2">
        <tbody>
            <tr>
                <td>
                    my table 2

                </td>
            </tr>
        </tbody>
    </table>
    <button type="submit" name="submit3">Submit

</button>
</form>

我的桌子1
提交
我的桌子2
提交
这应该可以做到:

var data = $(this).find('table').attr('id')
(哈。明白了吗?这应该行吗?我是个爱笑的人。)

这将为您提供已提交的表单,因此在其中查找表应该可以得到您想要的结果。

这应该可以做到:

var data = $(this).find('table').attr('id')
(哈。明白了吗?这应该行吗?我是个爱笑的人。)


这将为您提供已提交的表单,因此在表单中查找表应该会得到您想要的结果。

如果
元素始终位于表单中,您可以使用该函数。它的一个好处是它应该工作得更快,因为它只遍历父级中的元素,而不遍历所有级别的HTML

$(function() {
  $('.myForm').submit(function(e) {
      e.preventDefault();

      var table = $(this).children('table').attr("id");

      //do something with table
  });
});

否则,Colin建议的
find
肯定是最好的选择。

如果
元素总是紧跟在表单中,则可以使用该函数。它的一个好处是它应该工作得更快,因为它只遍历父级中的元素,而不遍历所有级别的HTML

$(function() {
  $('.myForm').submit(function(e) {
      e.preventDefault();

      var table = $(this).children('table').attr("id");

      //do something with table
  });
});

否则,,
find
正如科林所建议的那样肯定是最好的选择。

在多个元素上具有与id相同且名称相同的类的可能重复确实会让事情变得比需要的复杂。在多个元素上具有与id相同且名称相同的类的可能重复确实会让事情变得更加复杂比它需要的复杂。只是出于(坏?)习惯,如果我想指定一个直接后代,我从不使用“children”,而只使用.find('>table')。关于速度差异,这里有一个有趣的线索:如果上面的答案是正确的,那么在这种情况下使用find()可能会更快。只是出于(坏)习惯,如果我想指定一个直接子代,我从不使用“children”,而只使用.find('>table')。关于速度差异,这里有一个有趣的线索:如果上面的答案是正确的,那么在这种情况下使用find()可能会更快。