I need to get a tr
element which contains a td
element which contains specific text. The td
will contain that text and only that text (so I need text = 'foo'
not text contains 'foo'
logic).
So I need the equivalent of the following 'pseudo jQuery':
var tableRow = $(table td[text = 'foo']).parent('tr');
Can anyone provide the correct syntax?
You can use filter() to do that:
var tableRow = $("td").filter(function() {
return $(this).text() == "foo";
}).closest("tr");
I know this is an old post but I thought I could share an alternative [not as robust, but simpler] approach to searching for a string in a table.
$("tr:contains(needle)");
//where needle is the text you are searching for.
For example, if you are searching for the text 'box', that would be:
$("tr:contains('box')");
This would return all the elements with this text. Additional criteria could be used to narrow it down if it returns multiple elements
$(function(){
var search = 'foo';
$("table tr td").filter(function() {
return $(this).text() == search;
}).parent('tr').css('color','red');
});
Will turn the text red for rows which have a cell whose text is 'foo'.
This will search text in all the td's inside each tr and show/hide tr's based on search text
$.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();
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With