Il existe maintenant en CSS4, voir cette réponse.
Sinon, pour jQuery, vous pouvez utiliser...
$(':input[name]').filter(function() {
return this.value.toLowerCase() == 'search';
});
jsFiddle.
Vous pourriez également créer un sélecteur personnalisé...
$.expr[':'].valueCaseInsensitive = function(node, stackIndex, properties){
return node.value.toLowerCase() == properties[3];
};
var searchInputs = $(':input:valueCaseInsensitive("Search")');
jsFiddle.
Le sélecteur personnalisé est un peu exagéré si vous le faites une fois, mais si vous devez l'utiliser plusieurs fois dans votre application, cela peut être une bonne idée.
Mise à jour
Est-il possible d'avoir ce type de sélecteur personnalisé pour n'importe quel attribut ?
Bien sûr, consultez l'exemple suivant. C'est un peu compliqué (une syntaxe telle que :input[value:toLowerCase="search"]
aurait pu être plus intuitive), mais cela fonctionne :)
$.expr[':'].attrCaseInsensitive = function(node, stackIndex, properties){
var args = properties[3].split(',').map(function(arg) {
return arg.replace(/^\s*["']|["']\s*$/g, '');
});
return $(node).attr(args[0]).toLowerCase() == args[1];
};
var searchInputs = $('input:attrCaseInsensitive(value, "search")');
jsFiddle.
Vous pourriez probablement utiliser eval()
pour transformer cette chaîne en un tableau, mais je trouve que faire de cette manière est plus confortable (et vous n'exécuterez accidentellement aucun code que vous placez dans votre sélecteur).
Au lieu de cela, je divise la chaîne avec le délimiteur ,
, puis je supprime les espaces, les '
et les "
de chaque membre du tableau. Notez qu'une ,
à l'intérieur de guillemets ne sera pas traitée littéralement. Il n'y a aucune raison pour laquelle elle devrait l'être littéralement, mais vous pourriez toujours coder contre cette possibilité. Je vous laisse décider. :)
Je ne pense pas que map()
ait le meilleur support des navigateurs, vous pouvez donc itérer explicitement sur le tableau args
ou augmenter l'objet Array
.
1 votes
Question potentiellement dupliquée? stackoverflow.com/questions/3967869/…