gpt4 book ai didi

javascript - 替换 jQuery 选定的单元格范围?

转载 作者:可可西里 更新时间:2023-11-01 13:01:40 26 4
gpt4 key购买 nike

在下面的代码中,我们称它为test.htm。 ,加载后我得到一个表格:

ffox1

然后,如果我单击任何标题单元格,将运行一个脚本,使用 jQuery 选择器“#mytable > tbody > tr”遍历表格行,然后使用链式过滤器“td:gt(0):lt(2)”来选择一系列 td每行中的单元格。因此,如果我们的列索引为 0,1,2,3,4 , 然后 gt(0)将选择 1,2,3,4 - 和链式 lt(2)将应用于 0:1 ,1: 2 ,2: 3 ,3: 4 , 所以只有 0: 1 ,1: 2将保留,或者就原始列索引而言,1,2被选中。

对于这个选择,我想切换一个改变背景颜色的类,但我也想替换两个单元格的内容。所以我正在尝试:

$( "td:gt(0):lt(2)", $thisRow ).toggleClass( "viol" );
$( "td:gt(0):lt(2)", $thisRow ).html("<td>AAAAA</td><td>BBBB</td>");

类的切换(独立)有效,但替换无效:

ffox2

因此,我没有用另外两个单元格替换这两个单元格 - 我最终拆分了每个单元格,因为.html()应用于集合中的每个元素,此外它还会更改元素的内部 HTML。

因此,假设在行迭代循环中,我可以访问像 <td>AAAAA</td><td>BBBB</td> 这样的替换字符串对于一系列单元格,如何用此 HTML 字符串描述的内容替换一系列单元格?明确地说,在这个例子的上下文中,我希望结果是:

ffox3

test.htm 的代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<!-- <script type="text/javascript" src="../jquery-1.12.3.min.js"></script> -->
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<style type="text/css">
.a1 {
border-style: solid;
border-width: 1px;
font-size: 1em;
height:auto;
}
.viol { background-color: #DCE0FF; }
</style>
<script type="text/javascript">
function TableHeadListener(inevobj) {
console.log("TableHeadListener", inevobj);
ToggleTdRangeClass();
}
function ToggleTdRangeClass() {
$('#mytable > tbody > tr').each(function() {
$thisRow = $(this);
$( "td:gt(0):lt(2)", $thisRow ).toggleClass( "viol" );
$( "td:gt(0):lt(2)", $thisRow ).html("<td>AAAAA</td><td>BBBB</td>"); // AAA/BBB becomes html of each matched cell individually;!
});
}
createTable = function() {
var htmlTblString = '<table border="1" id="mytable">\n\
<thead>\n\
<tr>\n\
<th>Row h, cell h1</th>\n\
<th>Row h, cell h2</th>\n\
<th>Row h, cell h3</th>\n\
<th>Row h, cell h4</th>\n\
<th>Row h, cell h5</th>\n\
</tr>\n\
</thead>\n\
<tbody>\n\
<tr>\n\
<td>Row d1, cell d1-1</td>\n\
<td>Row d1, cell d1-2</td>\n\
<td>Row d1, cell d1-3</td>\n\
<td>Row d1, cell d1-4</td>\n\
<td>Row d1, cell d1-5</td>\n\
</tr>\n\
<tr>\n\
<td>Row d2, cell d2-1</td>\n\
<td>Row d2, cell d2-2</td>\n\
<td>Row d2, cell d2-3</td>\n\
<td>Row d2, cell d2-4</td>\n\
<td>Row d2, cell d2-5</td>\n\
</tr>\n\
</tbody>\n\
</table>\n';
$("#content").html(htmlTblString);
// add events:
var mtb = $("#mytable");
mtb.find('th').each(function() { $(this).on('click', null, this, TableHeadListener); });
}

ondocready = function() {
createTable();
}
$(document).ready(ondocready);
</script>
</head>

<body>
<h1>Hello World!</h1>

<div id="content" class="a1"></div>

</body>
</html>

最佳答案

实现此目的的一种方法是将所需的值存储在 array[] 中,然后根据数组的顺序将其设置到每个 td 元素。检查这个:

$('#mytable > tbody > tr').each(function() {
var txt = ['AAAA','BBBB'],
count = 0;
$thisRow = $(this);
$("td:gt(0):lt(2)", $thisRow).toggleClass("viol");
$("td:gt(0):lt(2)", $thisRow).each(function(){
$(this).html(txt[count]);
count++
})
});
.a1 {
border-style: solid;
border-width: 1px;
font-size: 1em;
height: auto;
}
.viol {
background-color: #DCE0FF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table border="1" id="mytable">
<thead>
<tr>
<th>Row h, cell h1</th>
<th>Row h, cell h2</th>
<th>Row h, cell h3</th>
<th>Row h, cell h4</th>
<th>Row h, cell h5</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row d1, cell d1-1</td>
<td>Row d1, cell d1-2</td>
<td>Row d1, cell d1-3</td>
<td>Row d1, cell d1-4</td>
<td>Row d1, cell d1-5</td>
</tr>
<tr>
<td>Row d2, cell d2-1</td>
<td>Row d2, cell d2-2</td>
<td>Row d2, cell d2-3</td>
<td>Row d2, cell d2-4</td>
<td>Row d2, cell d2-5</td>
</tr>
</tbody>
</table>

关于javascript - 替换 jQuery 选定的单元格范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38268606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com