2
function func(id) 
    {

        $(document).ready(function () 
        {
            $(".toggle").click(function () 
            {
                $("td:nth-child(" + id + ")>div").toggle();

            });
        });
        return false;
        }

我试图隐藏与单击的按钮相对应的列。但是这段代码得到了一些意想不到的输出,比如当点击一个按钮时两列都隐藏了。我哪里错了?

<table border="1">
<tr>
 <th><button class="toggle" id="1" onclick="return func(this.id);" >hide</button></th>
  <th><button class="toggle" id="2" onclick="return func(this.id);" >hide</button></th>
  </tr>
  <tr>
  <td> <div>row 1, cell 1</div></td>
  <td><div>row 1, cell 2</div></td>
  </tr>
  <tr>
  <td><div>row 2, cell 1</div></td>
  <td> <div>row 2, cell 2</div></td>
  </tr>
  </table>
4

2 回答 2

1

一个更简单的方法是在列中添加一个类td。我在你的每个 td 中添加了类col1和。col2

小提琴:http: //jsfiddle.net/tbpMX/

代码:

$(".toggle").click(function() {
    $(this).parent().hide();
    $(".col" + $(this).attr("id")).hide();
});
于 2013-05-08T13:50:37.603 回答
0

您不需要在您的 html 上单击即可调用该函数。

在您的 jquery 中,您可以拥有:

$("#1,#2").click(function(){
$(this).find("td").hide();
});

编辑:

这个没有诉诸于为列提供 id 名称:

$(document).ready(function(){
$("#1,#2").click(function(){
    var colid=$(this).prop("id");
    $("tr").children().each(function(){
        if (colid==1)
        {
           $(this).closest("td:nth-child(1),th:nth-child(1)").hide();                
        }
        else
        {
            $(this).closest("td:last-child,th:last-child").hide();
        }

    });
});

});

这是实际的小提琴

于 2013-05-08T13:46:44.490 回答