jquery - jquery 可折叠表错误

标签 jquery

我正在尝试制作一个可折叠面板。下面的代码是我与表格最接近的代码,但是当我再次将其折叠起来时,<td>的显示堆叠(仅发生在 Firefox 中),而在 Chrome 中,数据 <td>折叠后宽度不正确。

还有可以让图片反复切换吗?就像折叠时名称表中的绿点和关闭时的红点一样?

这是代码:

<?php
include "config/tabelwidth.php";
?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>


<script type="text/javascript">                                         
$(document).ready(function() {

   $("tr.header").click(function () { 
      $("tr.child", $(this).parent()).slideToggle("fast");
      $("td.subs", $(this).parent()).slideToggle("fast");
   });
});

</script>                                                               


<table border="1px" width="<?php echo $width."px"?>">
    <tr class="header">
        <td width="<?php echo $width1."px"?>">naam</td>
        <td width="<?php echo $width2."px"?>" class="subs">subs</td>
        <td width="<?php echo $width3."px"?>" class="subs">subs</td>
        <td width="<?php echo $width4."px"?>" class="subs">subs</td>
    </tr>
    <tr class="child">
        <td width="<?php echo $width1."px"?>">data1</td>
        <td width="<?php echo $width2."px"?>">data2</td>
        <td width="<?php echo $width3."px"?>">data3</td>
        <td width="<?php echo $width4."px"?>">data4</td>
    </tr>
</table>

编辑:

好的,更新我的 jQuery 成功了!:)

我真的很喜欢在这里看到那些乐于助人的人,看来 jQuery 是一个非常值得学习的东西 ^^

请问你们是在哪里学的 jQuery?

最后是我问题的最后一部分..

假设我想要一张折叠时向下箭头(名称:arrowdown)的图像,如果隐藏,则箭头指向右侧(名称:arrowright),你们是如何解决这个问题的? ;o:)

最佳答案

几乎所有您要求的事情都可以通过一些 CSS 规则和一个非常简单的 jQuery 切换来完成。我在这里发布了一个示例:http://jsfiddle.net/2BbUw/

要点是,您创建 CSS 规则,强制在 .collapsed 模式下仅第一行的第一个子项可见 - 然后使用 jQuery 切换 .collapsed表格本身上的 code> 标记。

然后 jQuery 就变得极其简单:

$(document).ready(function () {
    $('table.collapsible tr:first-child').on('click', function(ev) {
        $(ev.target).closest('table.collapsible').toggleClass('collapsed');
    });​
});

// note that the above only works in later versions of jQuery, due to .on()
// If you are using an earlier version of jQuery, replace .on() with .bind()

处理程序仅指向 tr:first-child(表中的第一行)。因为这完全基于 CSS 选择器,所以它也会自动应用于页面中的所有 .collapsible 表。

CSS 有点复杂,因为它使用了一系列伪选择器:

table.collapsible {
    width: 400px;
    border: 1px solid #666;
    margin: 5px;
    position: relative;
}

table.collapsible td {
    padding: 5px;
}
table.collapsible tr:first-child td:first-child {
    text-indent: 15px;
}

table.collapsible.collapsed tr:not(:first-child),
table.collapsible.collapsed tr:first-child td:not(:first-child) {
    display: none;
}

对于您请求的指标 - 我会提出以下建议。请注意,这有点粗糙,但还是一个纯 CSS 解决方案(意味着在浏览器中速度非常快)。

table.collapsible::before {
    content: '';
    border: none;
    position: absolute;
    left: 5px; top: 12px;
    height: 10px; width: 10px;
    border-radius: 5px;
    background-color: green;
}
table.collapsible.collapsed::before {
    background-color: red;
}

我想你会发现它适用于所有浏览器 - 由于都是 CSS 切换,所以速度非常快 - 并且使用非常简单的 jQuery 处理你要求的各种事情。

关于jquery - jquery 可折叠表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443963/

相关文章:

javascript - 这个javascript可以不引人注目吗?

javascript - 使用angular打开页面时如何展开折叠?

javascript - 当我使用过渡集更改 css 背景属性时,为什么我的背景会闪烁白色?

javascript - 我怎样才能启用包含空字符串?

jquery - 如何在初始页面加载时只显示两个表单域而不是全部 5 个? CSS

javascript - 无法使用 'in' 运算符搜索 'length'

jquery - 如何使用 jQuery 打开新窗口?

jquery - 展开可折叠时向下滑动内容

javascript - 如何在html模板中的数字中插入逗号?

javascript - 即使值未更改,jQuery UI slider 'change' 事件也会触发