Je dois obtenir un élément tr
qui contient un élément td
qui contient du texte spécifique. La td
contiendra ce texte et uniquement ce texte (j'ai donc besoin de text = 'foo'
et non de text contains 'foo'
logique).
J'ai donc besoin de l'équivalent du 'pseudo jQuery' suivant:
var tableRow = $(table td[text = 'foo']).parent('tr');
Quelqu'un peut-il fournir la syntaxe correcte?
Vous pouvez utiliser filter () pour le faire:
var tableRow = $("td").filter(function() {
return $(this).text() == "foo";
}).closest("tr");
Je sais que ceci est un ancien post, mais je pensais pouvoir partager une approche alternative [moins robuste, mais plus simple] pour la recherche d'une chaîne dans une table.
$("tr:contains(needle)");
// où needle correspond au texte que vous recherchez.
Par exemple, si vous recherchez le texte "boîte", ce serait:
$("tr:contains('box')");
Cela renverrait tous les éléments avec ce texte. Des critères supplémentaires pourraient être utilisés pour le réduire s'il renvoie plusieurs éléments
$(function(){
var search = 'foo';
$("table tr td").filter(function() {
return $(this).text() == search;
}).parent('tr').css('color','red');
});
Rendra le texte en rouge pour les lignes qui ont une cellule dont le texte est 'foo'.
Ceci recherchera du texte dans tous les td de chaque tr et affichera/cachera les tr en fonction du texte
$.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();
}
});
});
Démo Vous pouvez utiliser la méthode search () en utilisant RegExp correspondant texte