Méthode filter
La méthode filter ne conserve dans la sélection que
les éléments qui correspondent
à un sélecteur spécifique.
Syntaxe
Filtrage par sélecteur :
.filter(sélecteur);
Le paramètre peut également être des éléments DOM ou un objet jQuery :
.filter(Élément DOM ou objet jQuery);
Il est également possible de filtrer les éléments à l'aide
d'une fonction, qui est appelée séparément pour
chacun des éléments sélectionnés. Si elle
retourne true, alors l'élément courant sera
inclus dans le résultat final, si false
- il ne sera pas inclus. Les éléments eux-mêmes sont accessibles dans la fonction,
dans la variable this, et leurs numéros d'ordre
dans la sélection — dans la variable index :
.filter(function(index, elem))
Exemple
Trouvons tous les paragraphes, ajoutons le texte
'!' au début de chacun en utilisant
prepend,
puis récupérons parmi ceux trouvés uniquement les paragraphes
avec la classe www en utilisant filter
et ajoutons le texte '?' à la fin de chacun en utilisant
append :
<p>text</p>
<p>text</p>
<p class="www">text</p>
<p class="www">text</p>
$('p').prepend('!').filter('.www').append('?');
Le code HTML deviendra alors :
<p>!text</p>
<p>!text</p>
<p class="www">!text?</p>
<p class="www">!text?</p>
Exemple
Utilisons une fonction pour trouver tous
les paragraphes qui contiennent une balise
strong
et remplaçons leur contenu par le texte '!!!' :
<p><strong>text</strong></p>
<p><strong>text</strong></p>
<p>text</p>
<p>text</p>
$('p').filter(function() {
return $('strong', this).length === 1;
}).html('!!!');
Le code HTML deviendra alors :
<p>!!!</p>
<p>!!!</p>
<p>text</p>
<p>text</p>