在表格单元格HTML中隐藏/显示长文本

时间:2014-05-17 20:34:48

标签: javascript jquery html css twitter-bootstrap

我有一个HTML表格,它是通过php从MySQL数据库填充的。我正在使用Bootstrap提供的css。无论如何,我的问题是,在某些列中,每个单元格中都包含一个长文本。我正在使用一个隐藏显示其中一部分内容的CSS,因为我希望尽可能保持我的表格紧凑。我尝试了一个jquery的解决方案,但我对它并不是很好,而且它不起作用。我知道还有其他讨论,但我无法做到这些。

<tbody aria-live="polite" aria-relevant="all">
 <?php
 $i=0;
 while ($i < $num) {
   $process=mysql_result($risultati,$i,"process");
   $A=mysql_result($risultati,$i,"A");
   $B=mysql_result($risultati,$i,"B");
   $time_A=mysql_result($risultati,$i,"time_A");
   $time_B=mysql_result($risultati,$i,"time_B");
   ?>

   <tr class="odd">
     <td><font face="Arial, Helvetica, sans-serif"><?php echo $process;?></font></td>
     <td ><div id="text"><a class="toggle"><font face="Arial, Helvetica, sans-serif"><?php echo $A;?></font></a></div></td>
     <td><font face="Arial, Helvetica, sans-serif"><?php echo $B;?></font></td>
     <td><font face="Arial, Helvetica, sans-serif"><?php echo $time_A;?></font></td>
     <td><font face="Arial, Helvetica, sans-serif"><?php echo $time_B;?></font></td>
   </tr>
   <?php 
   $i++; 
 } 
 ?>
</tbody>

下面&#39;脚本:

<script>

    $('.toggle').click(function(){ 
        var target = $(this).closest('#text');
        if (target.hasClass('expanded')) {
            target.removeClass('expanded');
            $(this).text('(expand)');
        } else {
            target.addClass('expanded');
            $(this).text('(collapse)');
        }
    });

    </script>

这就是CSS:

#text { 
    white-space:nowrap;
    overflow:hidden;
    width:300px;
    text-overflow:ellipsis;
    -o-text-overflow:ellipsis;
}
#text.expanded {
    max-height:none;
}

3 个答案:

答案 0 :(得分:3)

考虑到OP关于复制/粘贴单元格内容的要求的评论,将其放在Boostrap popover的data-content属性中,这应该可以解决问题:

HTML:

<td>
  <a href="#" class="btn btn-link too-long" title="Optional Title" 
  data-content='Content that is too long to display because there is too much of it to fit in your table cell. But it all fits in this popover!' 
  data-placement="bottom">
  Content that is too long to display...</a>
</td>

JS:

$('#too-long').popover()

示例:http://jsfiddle.net/MjsAp/3/

答案 1 :(得分:0)

试试这个:

将html中的id="test"更改为class="text"

并更改你的qQuery:

    var target = $(this).closest('#text');

    var target = $(this).closest('.text');

jQuery不知道你引用了哪个#text,因为#text应该是唯一的。

答案 2 :(得分:0)

您可以将单元格的内容复制到title属性中。用户在鼠标悬停时将内容视为工具提示。

<td>
  <div id="test" title="Cell contents that are very long ...">
    Cell contents that are very long...
  </div>
</td>