Article initialement publié dans le weblog de Clever Age.
La librairie Javascript jQuery est en train de se répandre à grande vitesse, mais malgré une documentation assez complète, certains points restent obscurs. Voici par exemple comment créer votre propre filtre de sélection.
Le besoin particulier qui m’a conduit à trouver la solution que je vais exposer ici est de sélectionner des éléments dont le contenu texte est exactement égal à une chaine de caractères donnée.
jQuery propose le filtre contains() qui permet d’identifier des éléments qui contiennent la chaine de caractères ’text’, de l’une des manières suivantes :
Malheureusement, ce filtre ne permet pas d’identifier des éléments qui contiennent exactement la chaine 'text', donc il faut le faire soit-même.
La solution directe, sans étendre jQuery, est d’utiliser filter() :
Si cela est réalisable une ou deux fois dans un code relativement peu volumineux, il devient vite pénible de recopier tout ce code pour une opération qu’on imaginerait plus simple.
Heureusement, il est possible d’étendre jQuery, soit par des plugins soit directement jQuery lui-même et ses éléments, dont ses filtres. Cette dernière possibilité n’est par contre pas bien — voire pas du tout [1] — documentée.
Voici ce que ça donne pour le besoin particulier exprimé précédemment :
Une fois ceci fait, il est possible de filtrer les éléments de la manière suivante :
Simple, n’est-ce pas ?
Ce qu’il faut savoir pour écrire ses propres filtres est surtout la définition des variables disponibles. Vous avez sans doute vu ces étranges a et m[3] dans le code ci-dessus. La première impression pourrait être que cela ne permet de filtrer que les éléments de type lien — balise <a> — mais il n’en est rien, ce a n’est qu’un nom de variable.
Voici donc la fameuse liste des variables, grâce à ce mail de Danny Wachsstock sur la liste de discussion jQuery :
a pour l’élément à filtrerm[3] pour ce qui est entre parenthèses dans le sélecteuri pour l’index de l’élément à filtrerr pour le tableau complet d’élémentsComme indiqué dans le mail cité précédemment, vous trouverez de nombreux exemples dans cette liste de sélecteurs aditionnels.
A vous de jouer !
[1] Espérons juste que cette absence de documentation n’implique pas une pérennité douteuse
C’est sans doute très bête, mais ça me fait toujours sourire de voir des petits bugs pas méchants sur des sites ou applications développées par des boîtes de renom genre Apple.
Alors que je me — et vous — demandais il y a quelque temps si je devais faire du ménage dans mes flux, et que la migration de FeedBurner vers Google [1] ne semble pas bien se passer pour tout le monde [2], j’ai l’impression que mes flux disponibles via FeedBurner ont de plus en plus de hoquets.
Alors que (presque) tous les constructeurs d’ordinateurs portables clonent l’imprévu ASUS Eee PC et se lancent à corps perdu dans la mêlée pour grappiller des parts de marché sur ce qu’on appelle désormais les « NetBooks », que fait Apple ? Une version 9 ou 10 pouces du MacBook Air — appelons-le MacBook Helium — trouverait sans doute de très nombreux acquéreurs !
Derniers commentaires
clochix sur Nouvelle tempête sur les flux RSS, réduisons les intermédiaires ! : Hello, avec du retard parce que justement... je me suis désabonné de tes flux parce que de (...)
Acouphene sur Nouvelle tempête sur les flux RSS, réduisons les intermédiaires ! : Et dire que je viens juste de délaisser FeedBlitz pour FeedBurner... J’espère que je ne vais pas (...)
Vincent sur Faut-il que je revienne à un unique flux RSS ? : Perso j’ai le flux avec uniquement les billets du blog parce que c’est ce qui m’intéresse (...)
NiKo sur Faut-il que je revienne à un unique flux RSS ? : Perso j’aime bien les pages du type de celle de Simon Willison, ça donne tout de même un peu de (...)
Yemek Tarifleri sur Le même agenda que Gastero Prod avec SPIP : bonjour je suis néophyte en ce qui concerne SPIP et je cherche à implementer un module agenda (...)
NiCoS sur Nouvelle tempête sur les flux RSS, réduisons les intermédiaires ! : Et moi qui pensait que c’était lié à des svn update de SPIP... :-P Pas mal en tous cas le (...)
dreamz sur Il ne faut pas confondre quantité et qualité : Salut, pour éviter les parasites de google image, il suffit d’ajouter une balise meta robots (...)
kwaker21 sur Faut-il que j’abandonne SPIP pour DotClear ? : Bonjour, Je me demandais où tu en étais dans tes réflexions. Je tiens un blog sous Dotclear et je (...)
NiCoS sur Mes conventions de codage : Voilà, c’est fait :-)
Sur Le combat entre Blu-Ray et HD-DVD se jouera sur les contenus : Sony a aujourd’hui un avantage de Technologies au niveau de ses Téléviseurs grâce à sa Technologie (...)