【问题标题】:Loop through the matching table when clicking on a button单击按钮时循环匹配表
【发布时间】:2016-09-13 15:41:45
【问题描述】:

我有一个动态生成的 html 代码,看起来像:

<div class="systeme">
    <table method="post" class="table table_cultures">
        <tr class="formRows">
            <td>Something</td>
            <td>Something</td>
            <td>Something</td>
            <td>Something</td>
        </tr>
    </table>
    <button class="btn btn-default valider_systeme_culture">Valider</button>
</div>

<div class="systeme">
    <table method="post" class="table table_cultures">
        <tr class="formRows">
            <td>Something 2</td>
            <td>Something 2</td>
            <td>Something 2</td>
            <td>Something 2</td>
        </tr>
    </table>
    <button class="btn btn-default valider_systeme_culture">Valider</button>
</div>

当我单击其中一个按钮时,我想使用 javascript 循环通过匹配表并且仅此表。

目前,当我单击一个按钮时,我会获取两个表的所有数据。

在 Javascript 中,我有这个:

var table = $(".table_cultures tbody");
table.find('.formRows').each(function (i) { ... });

我也尝试了函数.parents(),但之后我无法执行.find('.table_cultures tbody),它不起作用。问题是我需要找到table_cultures tbody,因为它允许我在有 tbody 时遍历行。

我应该如何循环正确的表?

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    Nenad Vracar 的方法几乎没问题;但原始问题明确指出表是动态生成的,因此委托事件应该更安全。

    $('body').on('click', '.btn', function() {
      $(this).siblings('table')
        .find('.formRows')
        .each(function (index, elem) {
          //var $elem = (this);
          //either use the function parameters is the this variable
          //to do something with the current row
        });
    });
    

    【讨论】:

    • 函数prev 无法与我一起使用,因为我在按钮和表格之间有元素。请参阅其他答案的评论
    • 如果那里只有一张桌子,只需将prev 函数修改为siblings;否则使用更严格的选择器
    【解决方案2】:

    您可以使用$(this).prev('table'),其中$(this) 是单击按钮,然后您会得到prev("table") DEMO

    $('.btn').click(function() {
      $(this).prev('table').find('.formRows').css('background', 'red')
    })
    

    【讨论】:

    • 谢谢,但只有在按钮和桌子之间没有任何东西时它才能工作。就我而言,我之间有元素。我知道在我的示例中除了它是我的代码的简化版本之外什么都没有:/我通过添加一个 div 来编辑小提琴,仅供您查看:jsfiddle.net/Lg0wyt9u/852
    • 对于第二个查找表的示例,您的代码应如下所示jsfiddle.net/Lg0wyt9u/854
    • 它在小提琴中有效,但当我尝试真实再现时却无效
    • 无缘无故,谷歌浏览器刚刚停止执行一些javascript,如点击按钮事件。很奇怪,但它似乎适用于您的解决方案,我可以遍历确切的表格。谢谢 ! :)
    • 不客气。另外,如果您想检查每个td,您可以这样做jsfiddle.net/Lg0wyt9u/855
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多