之前做了一个删除线的效果,就是类似这样的,在内容的中间加一条线。 但是又有点不同的是,这种删除线不是单纯的在文字之上,而是给一个Table中的一行加上这种删除线效果。

这里有两个方法,是在不同时期写的,第一个有些缺陷,第二个在第一个基础上要好很多,目前没有发现什么缺陷吧。

直接上代码吧

页面内容:

    <body>
<table style="border:1px solid black;padding-left:5px;padding-right:5px;" cellpadding="10%" rules="cols">
<tr style="border-bottom:1px solid;color:#fff">
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
<th>球队</th>
<th>球衣号码</th>
<th>位置</th>
<th>身高</th>
<th>体重</th>
<th>简介</th>
<th>操作</th>
</tr>
<tr>
<td><span>1</span></td>
<td>乔丹</td>
<td>&nbsp;</td>
<td>芝加哥公牛队</td>
<td>23</td>
<td>得分后卫</td>
<td>198公分</td>
<td>&nbsp;</td>
<td><input type='text' style="width:200px" /></td>
<td><input type='button' value="删除" style="width:50px" /></td>
</tr>
<tr>
<td><span>2</span></td>
<td>科比</td>
<td>&nbsp;</td>
<td>洛杉矶湖人队</td>
<td>24</td>
<td>得分后卫</td>
<td>198公分</td>
<td>&nbsp;</td>
<td><input type='text' style="width:200px" /></td>
<td><input type='button' value="删除" style="width:50px" /></td>
</tr>
<tr>
<td><span>3</span></td>
<td>詹姆斯</td>
<td>&nbsp;</td>
<td>克里夫兰骑士队</td>
<td>23</td>
<td>小前锋</td>
<td>203公分</td>
<td>&nbsp;</td>
<td><input type='text' style="width:200px" /></td>
<td><input type='button' value="删除" style="width:50px" /></td>
</tr>
<tr>
<td><span>4</span></td>
<td>杜兰特</td>
<td>&nbsp;</td>
<td>俄克拉荷马雷霆队</td>
<td>35</td>
<td>小前锋</td>
<td>210公分</td>
<td>&nbsp;</td>
<td><input type='text' style="width:200px" /></td>
<td><input type='button' value="删除" style="width:50px" /></td>
</tr>
<tr>
<td><span>5</span></td>
<td>保罗</td>
<td>&nbsp;</td>
<td>洛杉矶快船队</td>
<td>3</td>
<td>控球后卫</td>
<td>188公分</td>
<td>&nbsp;</td>
<td><input type='text' style="width:200px" /></td>
<td><input type='button' value="删除" style="width:50px" /></td>
</tr>
</table>
</body>




页面效果:

jQuery代码(第一次):

        <script type="text/javascript">
$(function(){
//添加tr背景色
$("table tr:first").css("background-color","#696969");
$("table tr:even").not("table tr:first").css("background-color","#98F5FF");
$("table tr:odd").css("background-color","#90EE90");
//删除按钮点击事件
$("input[type='button']").click(function(){
$(this).parent().parent().line();
}); }) $.fn.line = function () {
return $(this).children("td").each(function (index) {
$(this).children().attr("disabled", "disabled").children().attr("disabled", "disabled");
if (index == 0) {//重点部分
var t = $(this).offset().top + $(this).height();//1、获得对应行,第一列相对于浏览器顶部的位移
var l = $(this).offset().left;//2、获得对应行,第一列相对于浏览器左侧的位移
var w = $(this).parent("tr").width();//3、获得对应行的宽度
$(this).children("*:last").after("<div style='outline:#000 solid 1px; position:absolute; left:" + l + "px;top:" + t + "px;width:" + w + "px;'></div>");//4
}
});
}
</script>



点击删除按钮效果如下:

jQuery代码(第二次):

主要就是修改了line方法里的内容

            $.fn.line = function () {
return $(this).children("td").each(function (index) {
$(this).children().attr("disabled", "disabled").children().attr("disabled", "disabled");
if (index == 0) {//重点部分
$(this).children("*:first").before("<div style='position:absolute;width:100%;padding-top: 12px;'><div style='outline:#000 solid 1px; width:96%;'></div></div>");//5
}
});

点击删除按钮效果如下:

大家有没有发现,做了一些小改动,不同点就在于line方法中加的动态浮动div的形态。从界面显示可能不太看出来,大家会觉得都差不多啊,而且细心的朋友会发现,第二次的删除线已经延伸到了表格之外,有些不好看,这块的修改方法大家可以把width:100%改成该表格确切的宽度值,这里之所以用width:100%是因为之前的项目中用的是一个iframe标签包着的,用这个属性,效果要好很多,因为当浏览器放大,缩小的时候,这条删除线会随着实际情况拉长和缩短。

当然,第二次的删除线不只是在这方面上比第一次的有优势,更重要的是因为,第二次的浮动不依赖于其他条件。所谓的其他条件是什么?比如,因为第一个里面用到了相对位移的东西,所以如果当含有删除线的这个table在页面最初加载时是隐藏状态的(有可能的,如果tab标签里不是第一个)。根本就取不到相对位移的值,这样就会出错。

再比如,用js想做一个打印页面的功能时,你需要读取原页面的html元素,把其放在打印窗口中,但是此时的删除线的相对位移就不是针对打印窗口而言了,所以基本也都会出错。

而第二次的删除线就完全不用考虑相对位移的问题了,当其插入每一行表格的第一列之后,绝对定位,脱离原来的文档流,调整一下上内边距,就有一个元素块在这一行上,然后里面包一个“线”就OK了。

这里其实css的东西是关键点,主要也不是专业写这些的,所以费了点劲,通过文章来记录一下。

DEMO下载地址:http://files.cnblogs.com/zhouhongyu1989/%E5%88%A0%E9%99%A4%E7%BA%BFDemo.rar

jQuery 表格中实现“删除线”的增进方法的更多相关文章

  1. jQuery根据元素值删除数组元素的方法

    http://www.jb51.net/article/68349.htm 本文实例讲述了jQuery根据元素值删除数组元素的方法.分享给大家供大家参考.具体如下: 例如删除C这个元素 ,前提不知道C ...

  2. 如何使用poi在word表格中插入行的4种方法

    本文记录了,在word表格中插入新行的几种方法.直接上代码说明 table.addNewRowBetween 没实现,官网文档也说明,只有函数名,但没具体实现,但很多文章还介绍如何使用这个函数,真是害 ...

  3. jQuery EasyUI中DataGird动态生成列的方法

    EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍Eas ...

  4. [转帖]Windows7/2008中批量删除隧道适配器的方法

    https://www.jb51.net/os/windows/479838.html 客户现场的硬件信息总是发生变化 这里查找一下资料 尝试一下. 1.在网卡属性的“网络”中,将“Internet协 ...

  5. Python的list循环遍历中,删除数据的正确方法

    在遍历list,删除符合条件的数据时,总是报异常,代码如下: num_list = [1, 2, 3, 4, 5] print(num_list) for i in range(len(num_lis ...

  6. DHTMLX 前端框架 建立你的一个应用程序 教程(十一)--添加/删除表格中的记录

    添加/删除表格中的记录 我们的最终功能是在表格中添加删除 我们通过单机工具栏上的按钮来实现添加删除 当我们单击添加按钮的时候, 表单中 第一行默认填写New contact 光标自动聚焦 当用户点击删 ...

  7. javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

    主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...

  8. jQuery常用方法一览及JQuery选择器获取表格中按钮所在行的其他列值

    Attribute: $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); ...

  9. ag-grid 表格中添加图片

    ag-grid是一种非常好用的表格,网上搜索会有各种各样的基本用法,不过对于在ag-grid 表格中添加图片我没有找到方法,看了官方的文档,当然英文的自己也是靠网页翻译,最后发现有这么一个例子,我知道 ...

随机推荐

  1. Delphi XE7编译安卓程序出错了

    昨天编译一个先前可以正常运行的程序,忽然就不能编译了,总是提示这个错误,经过一番排查,终于搞定了,原因:删除了安卓lib引用的JAR和单元文件.如果你也出现这个问题,打开工程全部目录,看一下是否有打小 ...

  2. Windows Python Extension Packages

    备注: 1.先要安装wheel库:pip install wheel 2.下载wheel,切换至下载路径,然后安装:pip install wheel库名.whl Windows Python Ext ...

  3. Swift 函数提前返回

    简评:函数提前返回主要的好处是:将每个错误处理进行分离,审查代码时不需要考虑多种复杂异常,我们可以吧注意力集中在也业务逻辑中,调试代码时可以直接在异常中打断点. 提前返回 首先来看一下需要改进的代码示 ...

  4. Java实现BF算法

    package 串的算法; public class BF { public static void main(String[] args) { String a = "aaabbaaacc ...

  5. 原 form 表单中 disabled 属性的元素不参与表单提交

    https://blog.csdn.net/benben683280/article/details/79173336

  6. CentOS 7 安装方式汇总

    U盘安装 通过U盘安装 CentOS 的过程和安装Windows非常相似,首先将 CentOS 镜像文件刻录到U盘(或者光盘),设置固件(BIOS或者UEFI)从U盘启动,然后逐步设置即可. 使用 V ...

  7. jsp页面struts2标签展示clob类型的数据

    直接从数据库中查出来的数据,是clob类型的在前端页面展示的时候是这样: 后来找到了一个方法,在action中添加一个方法,解析转换clob数据的方法 public String getClob(Cl ...

  8. 九省联考 2018 Day 1 复现

    前言 今年省选还有 15 天.每天针对性刷题学知识点有点枯燥,想到真题还没刷,就对着 pdf 做了一遍. A. 一双木棋 去年省选得了 25,应该是 \(n=2,m=2\) 的贪心和 \(m=1\) ...

  9. windows下Composer因php_openssl扩展缺失而安装失败

    Composer(https://getcomposer.org/)是PHP下的一个依赖管理工具.你可以在你的项目中声明你所需要用到的类库,然后Composer会在项目中为你安装它们.如果你了解Nod ...

  10. windows系统PHP7开启curl_init

    1.php.ini,开启extension=php_curl.dll,去掉去掉前面的“;” 2.检查php.ini的extension_dir值是哪个目录(也就是插件扩展目录,比如php_curl.d ...