Je ne pense pas que vous le pouvez. Il doit être:
#SomeDropdown >option[value='a\'b]<p>']
Et cela ne fonctionne pas comme un sélecteur CSS (dans les navigateurs modernes). Exprimé dans un JavaScript littéral de chaîne, vous serait naturellement besoin d'une autre ronde de s'échapper:
$("#SomeDropdown >option[value='a\\'b]<p>']")
Mais cela ne fonctionne pas en jQuery, car son sélecteur de parser n'est pas complètement conforme aux normes. Il utilise cette expression pour analyser l' value
le cadre d'un [attr=value]
condition de:
(['"]*)(.*?)\3|)\s*\]
\3 étant le groupe contenant de l'ouverture des guillemets, qui bizarrement sont autorisés à être ouverture de plusieurs citations, ou pas de l'ouverture des guillemets à tous. L' .*? alors peut analyser n'importe quel caractère, y compris les citations jusqu'à ce qu'il frappe le premier‘]', terminant le match. Il n'y a aucune disposition pour la barre oblique inverse d'échappement des CSS de caractères spéciaux, de sorte que vous ne peut pas correspondre à une chaîne de caractères arbitraire de la valeur en jQuery.
(Une fois de plus, la regex analyseurs de perdre.)
Mais la bonne nouvelle est que vous n'avez pas à compter sur les sélecteurs jQuery; il y a de très bonnes DOM méthodes que vous pouvez utiliser, en particulier HTMLSelectElement.options:
var select= document.getElementById('SomeDropdown');
for (var i= select.options.length; i-->0;) {
if (select.options[i].value=="a'b]<p>") {
// do something with option
} }
C'est de nombreuses fois plus simple et plus rapide que de demander à jQuery laborieusement analyser et de mettre en œuvre de votre sélection, et vous pouvez utiliser n'importe quelle chaîne de valeur vous le souhaitez sans avoir à vous soucier de l'échappement des caractères spéciaux.