【问题标题】:Jquery/javascript onclick display next rowJquery/javascript onclick 显示下一行
【发布时间】:2010-09-27 15:21:09
【问题描述】:

我有一个表,其中有一行使用 display:none 隐藏。我想在单击按钮时显示该行。我该怎么做??

<table>

<tr>
<td>
<button class="shownextrow">Show Next Row</button>
</td>
</tr>

<tr style="display:none">
<input type="text" name="input"/>
</tr>

</table>

【问题讨论】:

    标签: jquery onclick row hidden show


    【解决方案1】:

    你可以绑定到按钮上,相对地找到它,像这样:

    $("button.shownextrow").click(function() { 
      $(this).closest("tr").next().show();
    });
    

    这从按钮 ($(this)) 到使用 .closest()&lt;tr&gt;,然后将 .next() 同级 &lt;tr&gt; 获取到 .show()。您可能想使用.toggle() 而不是.show(),但其余部分相同。

    You can give it a try here。请注意,在示例中,&lt;input&gt; 直接包含在 &lt;tr&gt; 中,我将其包装在 &lt;td&gt; 中以使其成为有效的演示。

    【讨论】:

    • 如何在刚刚显示的 tr 中也显示隐藏对象??
    • @user342391 - 我不会在里面隐藏任何东西......但是您可以在上面示例中的.show() 之后添加.find('whatever').show() 以查找/显示里面的东西。
    【解决方案2】:

    Nick's approach 很好,但我可能会通过 delegate 函数为整个表(“事件委托”)使用单个处理程序,而不是每个按钮上的单独处理程序,如下所示:

    $('#theTable').delegate("button.shownextrow", "click", function() {
        $(this).closest("tr").next("tr").show();
    });
    

    Live example

    除其他事项外,这使您可以向表中添加更多行对(并删除行对),而不必担心为它们挂接/取消挂接事件处理程序。请注意,它确实要求 button 元素和 table 元素之间的层次结构中没有任何东西直接吃点击...


    这是我没有使用 delegate 的旧示例,仅用于历史目的 - delegate 是否简化了代码:

    $('#theTable').click(function(event) {
        var button = $(event.target).closest("button.shownextrow");
        if (button.length > 0) {
            button.closest("tr").next("tr").show();
        }
    });
    

    Live example

    【讨论】:

    【解决方案3】:

    您可以简单地调用父级tr 来显示下一个tr

    $('button.shownextrow').click(function () {
        $(this).parents('tr').next('tr').show();
    });
    

    我用过,效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 2012-01-26
      • 2014-01-03
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多