Ответ 1
Вы можете использовать filter() для этого:
var tableRow = $("td").filter(function() {
return $(this).text() == "foo";
}).closest("tr");
Мне нужно получить элемент tr
, который содержит элемент td
, который содержит определенный текст. td
будет содержать этот текст и только тот текст (так что мне нужна логика text = 'foo'
not text contains 'foo'
).
Итак, мне нужен эквивалент следующего "псевдо jQuery":
var tableRow = $(table td[text = 'foo']).parent('tr');
Может ли кто-нибудь указать правильный синтаксис?
Вы можете использовать filter() для этого:
var tableRow = $("td").filter(function() {
return $(this).text() == "foo";
}).closest("tr");
Я знаю, что это старый пост, но я думал, что могу поделиться альтернативным [не столь надежным, но более простым] подходом к поиску строки в таблице.
$("tr:contains(needle)");
//где игла - это текст, который вы ищете.
Например, если вы ищете текстовое поле, это будет:
$("tr:contains('box')");
Это вернет все элементы с этим текстом. Дополнительные критерии могут быть использованы для его сужения, если он возвращает несколько элементов
$(function(){
var search = 'foo';
$("table tr td").filter(function() {
return $(this).text() == search;
}).parent('tr').css('color','red');
});
Повернет текст красным для строк, у которых есть ячейка, текст которой "foo".
Это будет поиск текста во всех td внутри каждого tr и show/hide 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();
}
});
});
Демо Вы можете выполнить метод search() с использованием текста соответствия RegExp