惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
月光博客
月光博客
博客园_首页
博客园 - 叶小钗
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
量子位
小众软件
小众软件
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
IT之家
IT之家
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 滋心

为hover事件加上延迟 面向对象的JavaScript(2)闭包 面向对象的JavaScript(1):创建简单的类 自定义控件验证页面所有文本框 - 滋心 - 博客园 LinQ in Action 笔记三:Hello LINQ to SQL LinQ in Action 笔记二:Hello LINQ to XML LinQ in Action 笔记一、Hello LINQ to Objects JQuery选择器插件 Extra selectors JQuery选择器 - 滋心 - 博客园 利用Repeater控件显示主-从关系数据表 查询表结构 Sqlserver建立和另外数据库的连接 XPath实例教程十九、ancestor-or-self 轴(axis)包含上下文节点本身和该节点的祖先节点 XPath实例教程十八、descendant-or-self 轴 XPath实例教程十七、preceding轴 XPath实例教程十六、following轴 XPath实例教程十五、preceding-sibling 轴 XPath实例教程十四、following-sibling轴 XPath实例教程十三、ancestor轴
JQuery画细线表格
滋心 · 2009-05-13 · via 博客园 - 滋心

工作需要,要个Table画细线表格,如果用表格的Border属性呢,样式是立体的,不太好看,而且如果表格嵌套的话,里面的表格的外边框会比较粗,所以自己写了个JQuery的插件,可以画带外边框的细线表格和不带外边框的细线表格

 

 

插件代码:

// JScript 文件

jQuery.fn.extend({
  
//带外边框
  border: function() {
    
this.each(function(){            
        $(
this).find("tbody:first >tr>td").addClass("borderTop");
        
        $(
this).find("tbody:first >tr>td").addClass("borderRight");
        
        
var trs = $(this).find("tbody:first >tr");
        
for(var i=0; i<trs.size(); i++){
            
var tr = trs[i];
            
var rightTD = $(tr).children("td:first");
            
var rightRowspan = rightTD.attr("rowspan"-1;
            rightTD.addClass(
"borderLeft");
            i 
= i+rightRowspan;
        }
        
        
for(var i=0; i<trs.size();i++){
            
var tr = trs[i];
            
var bottomTD = $(tr).children("td");
            
for(var j=0; j<bottomTD.size(); j++){
                
var bottomRowspan = $(bottomTD[j]).attr("rowspan");
                
if(bottomRowspan + i == trs.size()){
                    $(bottomTD[j]).addClass(
"borderBottom");
                }
                
                
            }
        }
        $(
this).find("tbody:first >tr:last>td").addClass("borderBottom");
        
    });
    
    
    
  },
  
//不带外边框
  noborder: function() {
    
this.each(function(){
        
var trs = $(this).find("tbody:first >tr");
        
for(var i=0; i<trs.size(); i++){
            
var tr = trs[i];
            
var leftTD = $(tr).children("td:first");
            
var leftRowspan = leftTD.attr("rowspan");
            
for(var j=i+1; j<leftRowspan+i; j++)
            {
                $(trs[j]).children(
"td:first").addClass("borderLeft");
            }
            
        }
        $(
this).find("tbody:first>tr").each(function(i){
            $(
this).children("td:not(:first)").addClass("borderLeft");
        });
        
        
for(var i=0; i<trs.size(); i++){
            
var bottomTD = $(trs[i]).children("td");
            
for(var j=0; j<bottomTD.size(); j++){
                
var bottomRowspan = $(bottomTD[j]).attr("rowspan");
                
if(bottomRowspan + i != trs.size()){
                    $(bottomTD[j]).addClass(
"borderBottom");
                }
            }
        }
        
    });
  }
}); 

CSS:

 .borderTop{
    border-top
:solid 1px #000000;
}
.borderBottom
{
    border-bottom
:solid 1px #000000; 
}
.borderLeft
{
    border-left
:solid 1px #000000; 
}
.borderRight
{
    border-right
:solid 1px #000000; 
}

调用:

$(function() {
    $(
"table.border").border();
    $(
"table.noborder").noborder();
});

 <table class="border" cellpadding="0" cellspacing="0">
            
<tr>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
            
</tr>
            
<tr>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
            
</tr>
           
        
</table>
        
        
<table class="noborder" cellpadding="0" cellspacing="0">
            
<tr>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
            
</tr>
            
<tr>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
                
<td style="width: 100px; height: 21px;">
                    
&nbsp;</td>
            
</tr>
           
        
</table>

已知的问题:

如果表格中的td用到rowspan标记,会有问题,目前的替代做法是,用嵌套表格来实现(以解决)

如果表格中有tr或者td用display: none;隐藏了的话显示会不正确

ps:

2009-5-14:rowspan标记不能正常显示问题已解决