如何在JQuery Toggle中关闭其他函数

时间:2013-02-11 22:34:35

标签: jquery

我正在使用

$(".archived").click(function(){
    $(".archivedtable").toggle();
});

我有一堆表将根据选择的导航链接打开,所以如果他们选择1,1将打开。让我们说比他们选择2,2也会打开,但1仍然打开。所以我想知道如何做到这一点,1将会消失,2将是新的活跃的。这有意义吗?

更新:

if ($paid == 1 && $securitylevel == 1 && $csvuser != 1){

    $sql = "SELECT firstname, lastname, email, phone, username, password, status, statuschangedate FROM csvdata WHERE memberview =:username ORDER BY lastname";
    $sth= $DBH->prepare($sql);
    $sth->execute(array(':username' => $username));
    $i=0;
    echo "<table class='nonothertable'> 
    <tr class='firsttr' style='background:gray;'>
    <td>First Name </td>
    <td>Last Name </td>
    <td>Email </td>
    <td>Phone </td>
    <td>Username </td>
    <td>Password </td>
    <td>Status </td>
 <td>Status Change Date</td>
    <td>#</td>
     </tr>
    ........

     echo "
      </table>";
}
 <script>
$(".nonother").click(function(){
    $(".nonothertable").toggle();
});
</script>

所以这些由PHP填充的表格,我有很多这些表格,并且在每个表格之后都是如上所示的脚本,它将打开和关闭特定的脚本。我想知道如何,一旦我点击一个,如果还有一个打开,一旦关闭。

它们都在div中,有些嵌套在另一个div中。所有人都有同一个父母。

注:

请注意,填充的每个表都有不同的名称和不同的属性来访问它。

4 个答案:

答案 0 :(得分:0)

var $tables = $("table");
var $butons = $(".tableSelector");

$butons.click(function(){
    var $t = $(this);
    var $currentTable = $("."+$t.attr("class")+"table").show();
    $tables.not($currentTable).hide();
});

答案 1 :(得分:0)

当您控制打开和关闭的链接时表生成,我认为你的代码中有很多JS调用。只需为表提供一个公共类和一个不同的名称,然后根据表名创建链接。

我没有在您的示例中看到按钮(可点击元素)生成代码,因此您可以执行以下操作:

在循环内部,mytableX是唯一名称(用数据库ID或唯一编号替换X:

echo "<a href='#' class='togglers'>Open table X</a>";
echo "<table class='nonothertable' id='mytableX'>"
....
echo "</table>";

默认情况下,应使用CSS

隐藏表
.nonothertable { display:none; }

然后,只需拨打一次电话:

<script type="text/javascript">
$(document).ready(function() {
    $(".togglers").click(function(){
        $(".nonothertable").hide(); // Hide all tables
        $(this).next('.nonothertable').show(); // Show the table next to the link we just clicked
        return false; // Avoid page jumps
    });    
});
</script>

每次点击,我们都会隐藏所有表格,显示我们链接旁边的表格,并避免页面跳转。只有一个JS调用无限数量的表。

工作演示:http://jsfiddle.net/SHcjQ/

答案 2 :(得分:0)

好的,您的特定代码

只需添加

$("table").not(".current-one").hide();

在.toggle();

之前

答案 3 :(得分:-1)

当选择一个数字时,我会通过一个关闭所有表的循环,然后打开所选的表。