jQuery切换在HTML表格中显示/隐藏表单

时间:2012-08-10 18:41:38

标签: jquery

我有这个小提琴:http://jsfiddle.net/2nAEZ/3/

这个想法非常简单......当页面显示标签内的所有元素都被隐藏。除了“回复”按钮。

点击“回复”按钮后,表单会显示“取消”按钮。

但是,如何使“回复”按钮适用于每一行?单击“回复”按钮时,并非所有表单都会显示。谢谢。

3 个答案:

答案 0 :(得分:3)

试试 jsFiddle example 。我清理了你的HTML(没有dupe ID),并改变了jQuery以按行进行操作。

<强>的jQuery

$("form, .hide").hide();
$(".show").click(function() {
    $(this).parents('tr').find("form,.hide").show();
    $(this).parents('tr').find(".show").hide();
});
$(".hide").click(function() {
    $(this).parents('tr').find("form, .hide").hide();
    $(this).parents('tr').find(".show").show();
});​

<强> HTML

<table><tr>
    <td>12345</td>
    <td>message here<br>
        <form action="" method="post">
        <textarea></textarea>
        <input type="button" value="Send">
        </form></td>
    <td>
        <button class="hide">Cancel</button>
        <button class="show">Reply</button>
    </td>
</tr>
<tr>
    <td>67890</td>
    <td>another message here<br>
        <form action="" method="post">
        <textarea></textarea>
        <input type="button" value="Send">
        </form></td>
    <td>
        <button class="hide">Cancel</button>
        <button class="show">Reply</button>
    </td>
</tr></table>

答案 1 :(得分:1)

您不能拥有多个具有相同ID的元素!由于您的表单是由PHP生成的,

<button class="hide" data-form="<?=$form_number?>">Cancel</button>
<button class="show" data-form="<?=$form_number?>">Reply</button>

然后,

$("form, .hide").hide();
$(".show").click(function(){
   formnum = $(this).data("form");
   $("form"+formnum+", .hide").show();
   $('.show[data-form="'+formnum+'"').hide();
});

$(".hide").click(function(){
   formnum = $(this).data("form");
   $("form"+formnum+", .hide").hide();
   $('.show[data-form="'+formnum+'"').show();
});

您可以拥有多个具有相同类别的元素。

答案 2 :(得分:0)

如果你想独立控制每一个,你可能想要这样做:

JS:

$(document).ready(function(){
    $("form, #hide").hide();

    $("#show1").click(function(){
    $("#form1, #hide1").show();
    $("#show1").hide();
    });

    $("#hide1").click(function(){
    $("#form1, #hide1").hide();
    $("#show1").show();
    });
});​

HTML:

<tr>
    <td>12345</td>
    <td>message here<br>
        <form id="form1" action=\"\" method=\"post\">
        <textarea></textarea>
        <input id="reply1" type="button" value="Send">
        </form></td>
    <td>
        <button id="hide1">Cancel</button>
        <button id="show1">Reply</button>
    </td>
</tr>
<br>
<tr>
    <td>67890</td>
    <td>another message here<br>
        <form id="form2" action=\"\" method=\"post\">
        <textarea></textarea>
        <input id="reply2" type="button" value="Send">
        </form></td>
    <td>
        <button id="hide2">Cancel</button>
        <button id="show2">Reply</button>
    </td>
</tr>​

您需要额外的j来控制第二种形式。