【问题标题】:Display item below row in table on click单击时在表格中的行下方显示项目
【发布时间】:2017-06-17 02:12:42
【问题描述】:

我有一个显示一些信息的表格。我想要完成的是允许用户单击一行,并在该行下方显示与该行中的信息相关的注释。

我正在尝试对其进行设置,以便我可以使用漂亮的 CSS 过渡功能,因此仅将注释放在信息行下方的隐藏的、绝对定位的行中是不可能的。 CSS 过渡不适用于 position 样式。

我已经进行了设置,以便注释将在 div 中。当用户单击表格中的一行时,onClick 事件会调用一个 Javascript 函数,该函数使 div 可见。现在我只需要让 div 在选定的表格行下对齐。

如何获取表格行的高度和位置?我想我可以用它来定位div。或者,有没有更好的方法来做到这一点?

这是我所拥有的一个示例:

<style>
    .emarNote{
                transition: all .3s linear;
                -o-transition: all .3s linear;
                -moz-transition: all .3s linear;
                -webkit-transition: all .3s linear;
            }
</style>

<script type="text/javascript">
    function showEmar(id)
    {
        if (document.getElementById("emarNote"+id).style.visibility == "hidden")
        {
            document.getElementById("emarNote"+id).style.visibility = 'visible';
            document.getElementById("emarNote"+id).style.opacity = 1;
        }
        else
        {
            document.getElementById("emarNote"+id).style.opacity = 0;
            document.getElementById("emarNote"+id).style.visibility = 'hidden';
        }
    }
</script>

<table>
    <tr onClick="showEmar(1)">
        <td>Info</td>
        <td>Info</td>
    </tr>
</table>

<div id="emar1" class="emarNote" style="visibility:hidden; opacity:0; position:absolute;">
    note about info
</div>

【问题讨论】:

  • 你可以在这个项目中使用 jQuery 吗?这可能是实现目标的最简单(尽管不一定是最佳)方法。以跨浏览器的方式可靠地计算高度/宽度是一项非常重要的任务,无需 JS 库来为您完成。
  • jQuery 就可以了。遗憾的是,我还没有了解太多,所以任何新的接触都会有所帮助。

标签: css html-table position css-transitions


【解决方案1】:

第一次下载JQuery。 然后执行以下操作:

    <style>
    .emarNote{ background:#CCCCCC; }        
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('.emarNote').hide();
    $('tbody', '#myTable').click(function(event) {
        tr_ID = $(event.target).parent().attr('id');
        $('#' + tr_ID + '-info').fadeToggle('slow');
    });
});
</script>

<table id="myTable">
<tbody>
    <tr id="row1">
        <td>Info</td>
        <td>Info</td>
    </tr>
    <tr>
    <td colspan="2" id="row1-info" class="emarNote">MORE INFO would be really cool and such</td>
    </tr>
    </tbody>
</table>

注意:将“fadeToggle”替换为“slideToggle”以获得幻灯片效果。另外,我真的认为您应该阅读一下 JQuery 以完全理解解决方案。掌握了基础知识,你会发现其实很容易理解。

【讨论】:

  • 太棒了,谢谢!是的,我绝对需要时间来学习它。希望有一天,我会的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2015-09-26
  • 1970-01-01
  • 2017-10-08
  • 2019-06-12
  • 1970-01-01
相关资源
最近更新 更多