`
maysnow
  • 浏览: 16396 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

tr 的显示隐藏display属性导致firefox 的td colspan问题(ZT)

    博客分类:
  • html
阅读更多
不知道你有没有做过这样的一种效果,一个table中的一个连接,javascript 控制 tr 的显示隐藏,来达到显示更多数据的效果。如果没做过,尝试一下吧,你会发现,table中隐藏的tr的含有colspan的td 在再次显示以后,firefox会把内容合并到 第一个td里。

有点绕,把下面的代码copy以后另存为.html 打开 就知道我说的是什么问题了。锻炼自己的动手能力,我就不贴图了,想知道原因跟解决办法就看下去吧。
01	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
02	<html xmlns="http://www.w3.org/1999/xhtml">
03	<head>
04	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
05	<title>tr 的显示隐藏display属性导致td colspan问题--imouou.com</title>
06	<link href="" type="text/css" rel="stylesheet" ></link>
07	<style>
08	    #table {width:80%;border:1px solid #ccc;border-collapse:collapse;}
09	    #table td{border-right:1px solid #ccc;border-bottom:1px solid #ccc;}
10	</style>
11	 
12	</head>
13	 
14	 <body>
15	  <table id="table">
16	    <tr>
17	        <td>1</td>
18	        <td>2</td>
19	        <td>3</td>
20	        <td>4</td>
21	        <td>5</td>
22	        <td><a href="#" id="view" class="view">查看</a></td>
23	    </tr>
24	    <tr id="dis">
25	        <td>1</td>
26	        <td colspan="6">这里的信息默认是合并了6列的效果,</td>
27	    </tr>
28	    <tr>
29	        <td>1</td>
30	        <td>2</td>
31	        <td>3</td>
32	        <td>4</td>
33	        <td>5</td>
34	        <td><a href="#" id="view" class="view">查看</a></td>
35	    </tr>
36	    <tr id="dis2" style="display:block;">
37	        <td>第一个td</td>
38	        <td colspan="6">当display等于 block 或者 inline 以后,这里在firefox的效果会变成跟 “第一个td” 在一起,然后这里为空</td>
39	    </tr>
40	  </table>
41	 </body>
42	</html>

通过 class 为view的链接,显示隐藏 id 为 dis 的tr ,当tr的属性为 display:block 或者 display:inline 的时候,firefox就会出现显示错误了。 这个究竟是什么原因引起的?我用jquery的 show();hide();来控制显示时,就没有这个问题。看了jquery1.3.2的第3785行show() 函数,里面除了设置它的display属性以外,还多了一个elem.remove();不知道是不是跟这个有关。
01	if ( elemdisplay[ tagName ] ) {
02	    display = elemdisplay[ tagName ];
03	} else {
04	    var elem = jQuery("<" + tagName + " />").appendTo("body");
05	 
06	    display = elem.css("display");
07	    if ( display === "none" )
08	        display = "block";
09	 
10	        elem.remove();
11	 
12	    elemdisplay[ tagName ] = display;
13	}

是table的块元素引起的吗?那怎么inline了以后也会?后来查到csdn有篇文章,好像是firefox的display:block有缓存,那是不是跟上面的elem.remove()也是一样的?display:”没有参数的时候,默认是显示元素,我把应该显示的 display:block 改为 display:” ;解决了firefox的colspan这个问题。但是为什么会这样,还是一知半解,你知道吗?

jquery的demo
01	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
02	<html xmlns="http://www.w3.org/1999/xhtml">
03	<head>
04	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
05	<title>tr 的显示隐藏display属性导致td colspan问题--imouou.com</title>
06	<link href="" type="text/css" rel="stylesheet" ></link>
07	<style>
08	    #table {width:80%;border:1px solid #ccc;border-collapse:collapse;}
09	    #table td{border-right:1px solid #ccc;border-bottom:1px solid #ccc;}
10	</style>
11	<script src="http://www.imouou.com/js/jquery.js" type="text/Javascript" ></script>
12	 
13	<script>
14	    $(function(){
15	         $("#view").toggle(function(){
16	            $("#dis").show();
17	         },function(){
18	            $("#dis").hide();
19	         })
20	    })
21	</script>
22	</head>
23	 
24	 <body>
25	  <table id="table">
26	    <tr>
27	        <td>1</td>
28	        <td>2</td>
29	        <td>3</td>
30	        <td>4</td>
31	        <td>5</td>
32	        <td><a href="#" id="view" class="view">查看</a></td>
33	    </tr>
34	    <tr id="dis" style="display:none;">
35	        <td>1</td>
36	        <td colspan="6">这里的信息默认是合并了6列的效果,当display等于 block 或者 inline 以后,这里在firefox的效果会变成跟 1 在一起,然后这里为空</td>
37	    </tr>
38	  </table>
39	 </body>
40	</html>
分享到:
评论
3 楼 SunsetGrace1 2012-03-13  
SunsetGrace1 写道
我也遇到了,解决方法如下
var display=$('#'+attendlistid).attr('class');
   if(display=="hidden"){
      $('#'+attendlistid).show();
      $('#'+attendlistid).removeClass(display).addClass("show");//已失效,起作用的只是show(),只是作为显示隐藏的条件判断用,为了FF下clospan合并为1个单元格的问题
    }else{
      $('#'+attendlistid).hide();
      $('#'+attendlistid).removeClass(display).addClass("hidden");
    }

2 楼 SunsetGrace1 2012-03-13  
我也遇到了,解决方法如下
var display=$('#'+attendlistid).attr('class');
               
                if(display=="hidden"){
                    $('#'+attendlistid).show();
                    $('#'+attendlistid).removeClass(display).addClass("show");//已失效,起作用的只是show(),只是作为显示隐藏的条件判断用,为了FF下clospan合并为1个单元格的问题
                    $('#attendbtn_'+courseid).val('<%=user.get("ht.university.attendlistbtnhide")%>');
                }else{
                    $('#'+attendlistid).hide();
                    $('#'+attendlistid).removeClass(display).addClass("hidden");
                    $('#attendbtn_'+courseid).val('<%=user.get("ht.university.attendlistbtn")%>');
                }
1 楼 zhaoxiu_1945 2011-11-03  
。。。 你现在知道什么原因了吗,我按照你的方法解决了问题,但是这是问什么啊

相关推荐

    使用HTML开发商业网站-td标签属性课件.pptx

    &lt;td&gt;标签属性 表格 属性名 含义 常用属性值 ...在&lt;td&gt;标签的属性中,重点掌握colspan和rolspan,其他的属性了解即可,不建议使用,均可用CSS样式属性替代。 当对某一个&lt;td&gt;标签应用height属性设置高度时,该

    jQuery选择没有colspan属性的td的代码

    代码如下:$(“#tableName td:not([colspan])”)下面是一些补充资料:filter()和not(): [removed] $(document).ready(function() { //输出 hello alert&#40;$(“p”&#41;.filter(“.selected”).html()); //输出 How ...

    jsp代码问题

    checked="checked"/&gt;宋朝&lt;/td&gt;&lt;td&gt;唐朝"/&gt;唐朝&lt;/td&gt;&lt;td&gt;明朝"/&gt;明朝&lt;/td&gt;&lt;td&gt;元朝"/&gt;元朝&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;题目2:&lt;/td&gt;&lt;td colSpan="3"&gt;字母a后边的字母为&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;...

    html表格<table></table>

    &lt;td colspan="2" align="center"&gt; 第二行的单元格 &lt;/td&gt; &lt;/tr&gt; &lt;tr &gt; &lt;td&gt; 第一行的单元格 &lt;/td&gt; &lt;td&gt; 第二行的单元格 &lt;/td&gt; &lt;td&gt; 第三行的单元格 &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;

    登录页面html

    &lt;TD colSpan=4&gt;&nbsp;&lt;/TD&gt; &lt;/TR&gt; &lt;TR height=30&gt; &lt;TD width=380&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;&nbsp;&lt;/TD&gt; &lt;/TR&gt; &lt;TR height=40&gt; &lt;TD rowSpan=4&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;用户名:...

    圆角表格代码

    &lt;TD bgColor=#908a47 colSpan=2&gt;&lt;/TD&gt; &lt;TD bgColor=#f7f8f9&gt;&lt;/TD&gt; &lt;TD bgColor=#908a47 colSpan=2&gt;&lt;/TD&gt; &lt;TD&gt;&lt;/TD&gt; &lt;/TR&gt; &lt;TR height=1&gt; &lt;TD&gt;&lt;/TD&gt; &lt;TD bgColor=#908a47&gt;&lt;/TD&gt; &lt;TD bgColor=#f7f8f9 ...

    自适应PC手机端的C3 jQuery可编辑表格代码.zip

    代码片段: &lt;tr class="info"&gt; &lt;td&gt;姓名&lt;/td&gt; ...&lt;td&gt;性别&lt;/td&gt; ...&lt;td&gt;年龄&lt;/td&gt; ...&lt;td&gt;电话&lt;/td&gt; ...&lt;td&gt;操作&lt;/td&gt; ...&lt;/tr&gt; ...&lt;td colspan="5" class="danger"&gt;增加&lt;/button&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;

    asp.net简单程序

    &lt;td colspan="2" style="height: 23px"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="height: 23px"&gt; &lt;strong&gt;&lt;span style="font-size: 14pt; color: #0000cc"&gt;请留下你宝贵的观点,有你支持我们将做的更好!...

    JSP+Struts+JSTL+EL新闻发布系统jsp

    &lt;TD vAlign=top background=/images/bg_1.jpg colSpan=10&gt; &lt;TABLE cellSpacing=3 cellPadding=0 width="100%" border=0&gt;&lt;TBODY&gt; &lt;TR&gt; &lt;TD width="95%" height=1216&gt; ...

    在线网上航空订票系统

    &lt;td colspan="2"&gt;用户登录&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2"&gt;&lt;div align="center"&gt;&nbsp;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td width="150"&gt;用户名:&lt;/div&gt;&lt;/td&gt; &lt;td width="250"&gt; &lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; ...

    jsp页面错误信息

    &lt;tr&gt;&lt;td colspan="2"&gt;&lt;jsp:include page="view/AdminTop.jsp" /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr bgcolor="#F0EAED"&gt; &lt;td width="180" valign="top"&gt;&lt;jsp:include page="view/AdminLeft.jsp"/&gt;&lt;/td&gt; &lt;td width="598" align=...

    JSP图书管理系统

    &lt;td height="33" colspan="3" valign="middle" bgcolor="#F7F7F7"&gt;新进图书&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td height="10"&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td height="172"&gt;&lt;/td&gt; &lt;td valign="top"&gt;...

    00:asp-DataGrid 表头跨行跨列.pdf

    "投入数&lt;/td&gt;&lt;td colspan=4 align=center valign=middle&gt;完成机头数&lt;/td&gt;&lt;td colspan=4 align=center valign=middle&gt;包装数&lt;/td&gt;&lt;td colspan=4 align=center valign=middle&gt;入库数&lt;/td&gt;&lt;td rowspan=2&gt;待入库&lt;/td&gt;...

    轮播服装饰品鞋帽美容护肤皮具包 免费淘宝装修模板

    &lt;TD colSpan=6&gt;&lt;img height=19 alt="" src="http://img03.taobaocdn.com/imgextra/i3/T2fsxLXddaXXXXXXXX-712306726.jpg" width=532&gt;&lt;/TD&gt; &lt;TD&gt;...

    HTML表格标记教程(35):跨列属性COLSPAN

    在复杂的表格结构中,有的单元格在垂直方向上是跨多个单元格的,这就需要使用跨列属性COLSPAN。基本语法&lt;TD COLSPAN=VALUE&gt;语法解释VALUE代表单元格跨的列数。文件范例:10-33.htm通过COLSPAN属性实现跨列的单元格。...

    通过jquery还原含有rowspan、colspan的table的实现方法

    则给当前的td的父元素的兄弟元素添加td,如果td的colspan属性值大于1,则在当前的td元素后添加td 代码如下: //本文首发博客园:http://artwl.cnblogs.com(2012/02/08)jQuery.fn.RevertTable=function(){ $(“tr”,...

    向数据库存入图片及取出显示(源代码)

    其中一个cs代码显示 &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; 无标题页 ...

    xxx小区物业管理系统

    &lt;td colspan="2" style="height: 62px"&gt;&nbsp;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="width: 20%"&gt;&nbsp;&lt;/td&gt; &lt;td style="width: 80%"&gt;&lt;asp:TextBox ID="txtUser" runat="server" Width="194px"&gt;&lt;/asp:TextBox&gt;&lt;/td&gt; ...

    eWeb editor编辑器文件

    eWeb editor编辑器文件,说明,使用方法:将解压后的editor文件夹... &lt;td colspan="3"&gt; Height="0px" BorderStyle="None" style="display:none"&gt; &lt;/td&gt; &lt;/tr&gt; IIS中要配置能够访问asp页面即可。

Global site tag (gtag.js) - Google Analytics