Directement des documents jQuery:
Si vous souhaitez utiliser l’un des méta-caractères (tels que !"#$%&'()*+,./:;?@[\]^&a{|}~)
comme une partie littérale de un nom, vous devez échapper le caractère avec deux barres obliques inverses: \. Par exemple, si vous avez un élément avec id="foo.bar"
, vous pouvez utiliser le sélecteur $("#foo\\.bar")
.
Je veux savoir si une fonction quelconque peut m’aider à échapper à ces méta-personnages?
Regardez cette vidéo sur les bogues jQuery, l’auteur a une fonction qu’il a écrite qui utilise des regex pour échapper correctement à tous les sélecteurs jQuery @ 52: 18. Note latérale: la vidéo est excellente, chaque développeur utilisant jQuery devrait la regarder.
Transcrit pour la postérité:
Ssortingng.prototype.escapeSelector = function () { return this.replace( /([$%&()*+,./:;<=>?@\[\\\]^\{|}~])/g, '\\$1' ); };
Vous utiliseriez ceci comme ceci:
$('#' + 'foo.bar'.escapeSelector());