Jquery查找文本并更改单个单元格值
我一直在想办法。我尝试使用JQuery查找具有精确值的单元格,然后在不删除表的其余部分的情况下更改该单元格中的文本 下面是一个非常简单的HTML表:Jquery查找文本并更改单个单元格值,jquery,html,replace,html-table,Jquery,Html,Replace,Html Table,我一直在想办法。我尝试使用JQuery查找具有精确值的单元格,然后在不删除表的其余部分的情况下更改该单元格中的文本 下面是一个非常简单的HTML表: <table border='1'> <tr> <td> <table border='1'> <tr> <td>
<table border='1'>
<tr>
<td>
<table border='1'>
<tr>
<td>
Value 1
</td>
<td>
1234
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table border='1'>
<tr>
<td>
Value 1.1
</td>
<td>
5678
</td>
</tr>
</table>
</td>
</tr>
</table>
从我所读到的内容来看,我的问题是该表与此搜索匹配,因为该表包含单元格。以下是我的JSFIDLE:
加分:我接下来要做的是,我希望实用地立即获取单元格(在本例中是值为“1234”的单元格),这样我也可以任意更改它的值
一如既往,我们非常感谢您的帮助
根据gustavohenke的回答,我已经抽象出一个函数,我将在这里为那些寻找比我的确切场景更通用的函数的人提供这个函数
function findString(search, element) {
search = (typeof search === 'RegExp') ? search : new RegExp('^\\s*' + String(search) + '\\s*$');
element = (typeof element === 'undefined') ? '*' : element;
var x = $(element).filter(function () {
return search.test($(this).text());
});
return x;
}
方法签名:
findString(search [, element])
搜索
可以是字符串或正则表达式,元素
是可选的。如果不提供,它将搜索整个身体。为了提高性能,我建议您指定元素
更新的JSFIDLE:
演示-->
要访问nexttd
,请在上述代码中使用.next()
$("td").filter(function(){
return $.trim($(this).text()) == 'Value 1';
}).text("Value 1.TO THE MAX").next('td').text("i am next");
演示-->
演示-->
要访问nexttd
,请在上述代码中使用.next()
$("td").filter(function(){
return $.trim($(this).text()) == 'Value 1';
}).text("Value 1.TO THE MAX").next('td').text("i am next");
演示-->
搜索文本,然后对其进行修剪,因为空格会给您带来问题,然后将匹配项指定给正确的值
$("td").each(function(){
if($(this).text().trim() == "Value 1"){
$(this).text("Value 1.TO THE MAX");
}
});
搜索文本,然后对其进行修剪,因为空格会给您带来问题,然后将匹配项指定给正确的值
$("td").each(function(){
if($(this).text().trim() == "Value 1"){
$(this).text("Value 1.TO THE MAX");
}
});
var impacted=$(“td”).filter(函数(){
//您应该在这里使用regex,因为在.text()调用中可能会收到空白
返回/^\s*值1\s*$/.test($(this.text());
}).text(“最大值为1.5”);
//现在你把你想要的应用到之后的事情上
befected.next().text(“我旁边是一个受我的代码影响的了不起的人!”);
var impact=$(“td”).filter(函数(){
//您应该在这里使用regex,因为在.text()调用中可能会收到空白
返回/^\s*值1\s*$/.test($(this.text());
}).text(“最大值为1.5”);
//现在你把你想要的应用到之后的事情上
befected.next().text(“我旁边是一个受我的代码影响的了不起的人!”);
非常感谢您的帮助!我绝对认为这是最好的答案。我正在更新我的问题,以包含您在这里所做工作的抽象函数。再次感谢!非常感谢你的帮助!我绝对认为这是最好的答案。我正在更新我的问题,以包含您在这里所做工作的抽象函数。再次感谢!
var affected = $("td").filter(function() {
// You should use regex here because you'll likely to receive whitespaces in the .text() call
return /^\s*Value 1\s*$/.test( $( this ).text() );
}).text( "Value 1.TO THE MAX" );
// Now you apply what you want to what comes after that <td>s
affected.next().text( "I'm next to an awesome <td> affected by my code!" );