如何解决jQuery-查找包含包含特定文本的表格单元格的表格行
| 我需要获取一个包含包含特定文本的td
元素的tr
元素。 td
将包含该文本,并且仅包含该文本(因此我需要text = \'foo\'
而不是text contains \'foo\'
逻辑)。
所以我需要以下\'pseudo jQuery \'的等效项:
var tableRow = $(table td[text = \'foo\']).parent(\'tr\');
谁能提供正确的语法?
解决方法
您可以使用filter()来做到这一点:
var tableRow = $(\"td\").filter(function() {
return $(this).text() == \"foo\";
}).closest(\"tr\");
,我知道这是一篇过时的文章,但是我想我可以分享一种替代的方法(不是更健壮,但更简单),用于在表中搜索字符串。
$(\"tr:contains(needle)\");
//其中needle是您要搜索的文本。
例如,如果您要搜索文本\'box \',则将为:
$(\"tr:contains(\'box\')\");
这将返回带有此文本的所有元素。如果返回多个元素,则可以使用其他条件来缩小范围
,$(function(){
var search = \'foo\';
$(\"table tr td\").filter(function() {
return $(this).text() == search;
}).parent(\'tr\').css(\'color\',\'red\');
});
对于具有文本为\'foo \'的单元格的行,会将文本变为红色。
,这将在每个tr内的所有td \中搜索文本,并根据搜索文本显示/隐藏tr \
$.each($(\".table tbody\").find(\"tr\"),function () {
if ($(this).text().toLowerCase().replace(/\\s+/g,\'\').indexOf(searchText.replace(/\\s+/g,\'\').toLowerCase()) == -1)
$(this).hide();
else
$(this).show();
});
, <input type=\"text\" id=\"text\" name=\"search\">
<table id=\"table_data\">
<tr class=\"listR\"><td>PHP</td></tr>
<tr class=\"listR\"><td>MySql</td></tr>
<tr class=\"listR\"><td>AJAX</td></tr>
<tr class=\"listR\"><td>jQuery</td></tr>
<tr class=\"listR\"><td>JavaScript</td></tr>
<tr class=\"listR\"><td>HTML</td></tr>
<tr class=\"listR\"><td>CSS</td></tr>
<tr class=\"listR\"><td>CSS3</td></tr>
</table>
$(\"#textbox\").on(\'keyup\',function(){
var f = $(this).val();
$(\"#table_data tr.listR\").each(function(){
if ($(this).text().search(new RegExp(f,\"i\")) < 0) {
$(this).fadeOut();
} else {
$(this).show();
}
});
});
演示版
您可以通过使用RegExp匹配文本的search()方法执行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。