Search code examples
jquerypseudo-class

JQuery table search number of rows by multiple contains value


i would like to search in a table the number of rows by multiple :contains() value of td.

<table id="tabCity">
<tr><td>Name</td><td>Surname</td><td>City</td></tr>
<tr><td>Paul</td><td color>Smith</td><td>Boston</td></tr>
<tr><td>Andrew</td><td>Smith</td><td>London</td></tr>
<tr><td>Smith</td><td>Green</td><td>Boston</td></tr>
<tr><td>Nick</td><td>Smith</td><td>Boston</td></tr>
</table>
<br>
<button class="go">Search Surname Smith in Boston</button>
<br>
<label>The result must be 2</label>

$(document).on('click', '.go', function(){
var rows= $("#tabCity tr td:nth-child(2):contains('Smith'), td:nth-child(3):contains('Boston')");
alert(rows.length);
});

Look here: http://jsfiddle.net/drh0mvhz/1


Solution

  • .filter() allows you to do more complex filtering:

    var rows = $("#tabCity tr").filter(function() {
        return $(this).find("td:nth-child(2):contains('Smith')").length 
            && $(this).find("td:nth-child(3):contains('Boston')").length;
    });
    

    http://jsfiddle.net/bh6t6tf6/