我一直试图解决这个问题。我正在尝试使用JQuery来查找具有精确值的单元格,然后更改该精确单元格中的文本而不会删除表格的其余部分。
这是一个非常简单的HTML表格:
<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>
我想找到与“值1”完全匹配的单元格,然后将其更改为“Value to the MAX”而不更改任何其他单元格(因此它不会意外地匹配单元格“Value 1.1”)< / p>
我最近/没有崩溃的尝试:
$("td:contains('Value 1')").text("Value 1.TO-THE-MAX");
从我读过的,我的问题是该表与此搜索匹配,因为该表包含该单元格。这是我的JSFiddle:http://jsfiddle.net/sonoflysander/9gBqU/15
奖励积分:之后我将尝试做什么,我想务实地接下来立即获取单元格(在这种情况下单元格值为“1234”),这样我也可以任意改变它的值。 / p>
一如既往,非常感谢任何帮助。
根据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])
search
可以是字符串或正则表达式,element
是可选的。如果没有提供它将搜索整个身体。为了提高性能,我建议您指定element
。
更新了JSFiddle:http://jsfiddle.net/sonoflysander/9gBqU/
答案 0 :(得分:3)
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!" );
答案 1 :(得分:2)
$("td").filter(function(){
return $.trim($(this).text()) == 'Value 1';
}).text("Value 1.TO THE MAX");
演示--->
http://jsfiddle.net/9gBqU/21/
要访问下一个td
,请在上面的代码中使用.next()
$("td").filter(function(){
return $.trim($(this).text()) == 'Value 1';
}).text("Value 1.TO THE MAX").next('td').text("i am next");
答案 2 :(得分:1)
的 jsFiddle Demo
强> 的
搜索文本,然后修剪它,因为空格是给你带来问题的,然后将匹配分配给正确的值
$("td").each(function(){
if($(this).text().trim() == "Value 1"){
$(this).text("Value 1.TO THE MAX");
}
});