一个表格往往是从后台获取数据,因此表格的内容往往只有孤立的tr、td标签,而不包含id、class、name这些可以直接被选择器识别的标签;而且从后台获取的数据往往是不断发生变化的,给表格加上id等标签也不太现实。实际应用种,经常需要获取到表格的数据内容,以便下一步的更新内容。

这里提供一种jQuery获取表格内容的一种方法。

示例页面:

<html>
<head><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
</head>>
<body><table border="1"><tr><th>name</th><th>sex</th><th>old</th><th>operate</th></tr><tr><td>Lisa</td><td>female</td><td>20</td><td><button>update</button></td></tr><tr><td>Mike</td><td>male</td><td>23</td><td><button>update</button></td></tr><tr><td>Alex</td><td>male</td><td>22</td><td><button>update</button></td></tr></table><br> name<input><br><br> sex<input><br><br> old<input><br><br>
</body>
</html>


如图页面,要求点击update的button实现将所在行的数据填写到下方对应的input中。

要获取的数据在td标签内,因此要想办法用选择器选中td,自然能够想到使用:$(“td”)

然而这样会选中所有的td元素,无法做到每行的区分。

经过观察,可以发现每个button和数据是在同一行的,具有一定的关联性。

jQuery提供了.prevAll()的遍历方法,用于选择被选元素之前的所有同级元素。

同级元素指的是在同一元素下面的元素。

<tr>
<td>Lisa</td>
<td>female</td>
<td>20</td>
<td><button>update</button></td>
</tr>

此处的所有td元素都是同级元素,他们都在同一个tr下面。

.parent()方法用于选择被选元素的直接父元素。父元素指的是上一级的元素:

<td><button>update</button></td>

此处的td元素就是button的上级元素。

有了这些方法,可以用:

$("button").parent().prevAll()

来选中和button同一行的所有td元素,但经过实际操作,这样写会出现所有button点击后都是获取最后一行的内容。原因是button有多个,$(“button”)会默认指向最后一个button,不是点击事件的所在行。

要将这个范围缩小,借助点击事件,改进上述代码:

$("button").click(function() {$(this).parent().prevAll()
})

$(this)表示事件发生的元素本身,此处表示发生点击事件的button,是唯一的,因为不存在同时点击多个button。

$(this).parent().prevAll()选中的是发生点击事件的button同一行的所有td元素,要将这些td的内容输出,还需要对所有td进行有序排列,否则出现的就是所有td的内容。

$("button").click(function() {alert($(this).parent().prevAll().text());
})

点击第一行的button,将会出现20femaleLisa。

.eq()方法会将选中的多个元素按顺序排列并选取,从.eq(0)依次开始。

$(this).parent().prevAll().text().eq(0)将会选中button前一个td,因为.prevAll()是从后往前排列。
依次:
$(this).parent().prevAll().text().eq(1)选中button往前第二个td,
$(this).parent().prevAll().text().eq(2)选中button往前第三个td。

同样的,可以使用$(input).eq(0)选中第一个input元素,
依次:
$(input).eq(1)选中第二个input元素,
$(input).eq(2)选中第三个input元素。

此时将td的内容赋值给input就很简单了。

script内容:

$(function() {$("button").click(function() {$("input").eq(2).val($(this).parent().prevAll().eq(0).text());$("input").eq(1).val($(this).parent().prevAll().eq(1).text());$("input").eq(0).val($(this).parent().prevAll().eq(2).text());})
})

全部代码:

<html>
<head><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
</head>
<body><table border="1"><tr><th>name</th><th>sex</th><th>old</th><th>operate</th></tr><tr><td>Lisa</td><td>female</td><td>20</td><td><button>update</button></td></tr><tr><td>Mike</td><td>male</td><td>23</td><td><button>update</button></td></tr><tr><td>Alex</td><td>male</td><td>22</td><td><button>update</button></td></tr></table><br> name<input><br><br> sex<input><br><br> old<input><br><br><script>$(function() {$("button").click(function() {$("input").eq(2).val($(this).parent().prevAll().eq(0).text());$("input").eq(1).val($(this).parent().prevAll().eq(1).text());$("input").eq(0).val($(this).parent().prevAll().eq(2).text());})})</script>
</body>
</html>

jQuery获取表格内容相关推荐

  1. 使用jQuery获取表格内容、:nth-child() 选择器用法

    <table border="1"><thead><tr><th>月份</th><th>甲</th&g ...

  2. jquery获取元素内容-text()和val()

    不传参数的text()方法在获取文本内容时,会把子元素的文本也获取过来(会删除 HTML 标记),例子: <!doctype html> <html> <head> ...

  3. jquery 序列化表格内容为字符串(serialize)

    ajax - serialize() 方法-遍历form进行AJAX提交,序列表表格内容为字符串. html: <form><select name="single&quo ...

  4. jquery获取表格中特定列

    1 jQuery(this).closest("tr").find("td").eq(11).text() View Code 如果有一个表格,我们要用jque ...

  5. Jquery 获取元素内容

    语法解释: 1. $("#select_id").change(function(){//code...});   //为Select添加事件,当选择其中一项时触发 2. var ...

  6. html文本框获取表格内容,html表格、表单

    知识点一:表格 1.表格标签  table 2.表格的组成  行 tr  单元格  td 3.建立表格步骤 1.建立表格, 2.判断行数和列数 3.用行去包含单元格 4.在每个单元格中去添加内容 4. ...

  7. XLSX + VUE获取表格内容,实现下载模板、导入表格、导出表格功能

    安装依赖 npm install xlsx --save template-用的element <el-upload:file-list="fileList"accept=& ...

  8. jQuery获取元素内容

    html()方法 返回或设置被选元素的内容 如果,没有参数,返回被选元素的内容 如果,有参数,设置被选元素的内容 // 返回元素 var text=$('.divClass').html(); // ...

  9. jquery实现表格内容筛选

    对于表格来说,当数据比较多的时候,我们无法一页一页的查找,这时可以通过一个搜索框来实现搜索. 对于这个搜素框,我们为了更好的体验可以利用keyup事件实现在用户输入的时候就开始筛选,而不是填完以后点击 ...

最新文章

  1. Java三大主流框架概述
  2. 地表最强VLP模型!谷歌大脑和CMU提出极简弱监督模型
  3. 十张图看懂SDN与NFV的区别与联系?
  4. 云技术概况:云计算的优点/特点/类型/服务模式
  5. 也来看看Android的ART运行时
  6. hbase读写流程及缓存机制
  7. nimbus java_Java:Swing使用Nimbus皮肤
  8. ArcGIS Server SOE开发之奇怪异常:
  9. 2016/11/07 线程的创建和启动
  10. TCP加速机制是如何加速的?
  11. Javascript特效:tab标签
  12. matlab fullfile函数
  13. linux下不是很完美的提高android虚拟机的启动速度
  14. C# ChartControl
  15. C语言链表详解(通俗易懂,超详细)
  16. 自己DIY一个mp3播放器
  17. java json日期格式化_JSON格式化日期方法
  18. 互联网营销师-淘宝直播运营
  19. 【Rosalind】Computing GC Content
  20. MTP模式下恢复手机误删数据方法(MX2、MX3亲测可用)

热门文章

  1. 数据结构 - 图(C++)
  2. Linux让进程(正在运行)在后台运行:nohup//disown/screen/Tmux
  3. vs2019配置opencv4.6.0
  4. 现代简约,爱的是宽松 简洁 舒适
  5. vscode 调试debugging功能 -- 翻译学习
  6. 【车道线算法】GANet-车道线检测环境配置一文通关
  7. 伙伴算法和slab_20多种免费的Slab Serif字体用于徽标和标题
  8. 用matlab对维纳滤波器,基于Matlab的维纳滤波器仿真研究
  9. 如何将光盘里面的内容复制到电脑中
  10. php 比对两张图片,PHP实现图片相似度对比