jquery如何获得表格所在的行数和列数
补充一点,这个表格是动态生成的,每一个单元格不含任何位置信息,如class="cell_x_y"等。 展开
jQuery 提供了index()方法用于获取第一个匹配元素相对于其同胞元素的 index 位置(从0开始计数),基本语法为:$(selector).index()。因此当前 tr 的 index 可以得到行数,当前 td 的 index 可以得到列数。实例演示如下:
1、HTML结构
<table id = "test">
<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>
<tr><td>2</td><td>4</td><td>5</td><td>6</td></tr>
<tr><td>3</td><td>7</td><td>8</td><td>9</td></tr>
<tr><td>4</td><td>1</td><td>2</td><td>3</td></tr>
</table>
2、jquery代码
$(function(){
$("table td").click(function() {
var row = $(this).parent().index() + 1; // 行位置
var col = $(this).index() + 1; // 列位置
alert("当前位置:第"+row+"行,第"+col+"列")
});
});
3、效果演示
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>tableTest.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
//页面装载就加载函数
$(document).ready(function() {
//给所有的td单元格绑定一个click事件
//如果这个table的id为table1,那单给table1的所有td加click事件代码为:
// var tds = $("#table1").find("td");
var tds = $("td");
tds.click(tdclick);
});
function tdclick() {
//var td = $(this);
//var text = td.text();
// $(this)表示这个td单元格,
// .parent("tr")表示这个td的父节点
// .prevAll()表示这个tr前面有多少个tr
var hang = $(this).parent("tr").prevAll().length;
var lie = $(this).prevAll().length;
hang = Number(hang)+1;//字符串变为数字
lie = Number(lie)+1;
alert("第"+hang+"行"+"第"+lie+"列");
}
</script>
</head>
<body>
<table border="1px" width="300" id="table1">
<tr>
<td>
1
</td>
<td>
2
</td>
<td>
q
</td>
<td>
t
</td>
</tr>
<tr>
<td>
a
</td>
<td>
2
</td>
<td>
q
</td>
<td>
y
</td>
</tr>
<tr>
<td>
b
</td>
<td>
2
</td>
<td>
3
</td>
<td>
b
</td>
</tr>
<tr>
<td>
c
</td>
<td>
2
</td>
<td>
q
</td>
<td>
4
</td>
</tr>
<tr>
<td>
d
</td>
<td>
2
</td>
<td>
q
</td>
<td>
f
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE
HTML
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN">
<html>
<head>
<title>tableTest.html</title>
<meta
http-equiv="Content-Type"
content="text/html;
charset=utf-8"
/>
<script
type="text/javascript"
src="js/jquery.js"></script>
<script
type="text/javascript">
//页面装载就加载函数
$(document).ready(function()
{
//给所有的td单元格绑定一个click事件
//如果这个table的id为table1,那单给table1的所有td加click事件代码为:
//
var
tds
=
$("#table1").find("td");
var
tds
=
$("td");
tds.click(tdclick);
});
function
tdclick()
{
//var
td
=
$(this);
//var
text
=
td.text();
//
$(this)表示这个td单元格,
//
.parent("tr")表示这个td的父节点
//
.prevAll()表示这个tr前面有多少个tr
var
hang
=
$(this).parent("tr").prevAll().length;
var
lie
=
$(this).prevAll().length;
hang
=
Number(hang)+1;//字符串变为数字
lie
=
Number(lie)+1;
alert("第"+hang+"行"+"第"+lie+"列");
}
</script>
</head>
<body>
<table
border="1px"
width="300"
id="table1">
<tr>
<td>
1
</td>
<td>
2
</td>
<td>
q
</td>
<td>
t
</td>
</tr>
<tr>
<td>
a
</td>
<td>
2
</td>
<td>
q
</td>
<td>
y
</td>
</tr>
<tr>
<td>
b
</td>
<td>
2
</td>
<td>
3
</td>
<td>
b
</td>
</tr>
<tr>
<td>
c
</td>
<td>
2
</td>
<td>
q
</td>
<td>
4
</td>
</tr>
<tr>
<td>
d
</td>
<td>
2
</td>
<td>
q
</td>
<td>
f
</td>
</tr>
</table>
</body>
</html>
var cell = "";
if(navigator.userAgent.indexOf("MSIE") > 0)
cell = event.srcElement;
else
cell = arguments.callee.caller.arguments[0].target;
var col = cell.cellIndex;//列数
var row = row.rowIndex;//行数