¿Cómo tomar ID como selector cuando se usa hash?

Supongamos el siguiente html:

test1
test2

Ahora, lo siguiente no funcionaría, ¿por qué?

css ….

 #test#1{color: red;} 

jQuery ….

 $('#test#2').css('color','blue'); 

Para usar cualquiera de los metacaracteres como! “# $% & ‘() * +,. / :; < =>? @ [] ^` {|} ~ Como parte literal de un nombre, debe ser escapó con las barras diagonales inversas:

css manera:

 #test\#1{ color: red; } 

jquery manera:

 $('#test\\#2').css('color','blue'); 

manifestación


Recomendación:

No debe usar # en su id. Vea más para obtener detalles

Los tokens de ID y NAME deben comenzar con una letra ([A-Za-z]) y pueden ir seguidos de cualquier cantidad de letras, dígitos ([0-9]), guiones (“-“), guiones bajos (“_”) , dos puntos (“:”) y puntos (“.”).


Por lo tanto, es posible que también se pregunte si id = “test.1” se puede utilizar y para esto también debe escapar del personaje como se describe anteriormente.

Puede escapar del # con barra invertida \ :

 #test\#1{ color: red; } 

con jQuery, puedes hacer lo mismo pero debes escapar de la \ con otra barra invertida:

Para usar cualquiera de los metacaracteres (como! “# $% & ‘() * +,. / :; < =>? @ [] ^` {|} ~) Como parte literal de un nombre, debe ser escapado con dos barras invertidas: \\

 $('#test\\#2').css('color','blue'); 

Fiddle Demo

Sin embargo, # no es un identificador único válido según la especificación HTML 4 :

Los tokens de ID y NAME deben comenzar con una letra ([A-Za-z]) y pueden ir seguidos de cualquier cantidad de letras, dígitos ([0-9]), guiones (“-“), guiones bajos (“_”) , dos puntos (“:”) y puntos (“.”).

y la especificación HTML 5 también:

El valor debe ser único entre todos los ID en el subárbol de inicio del elemento y debe contener al menos un carácter. El valor no debe contener ningún espacio de caracteres.

Entonces debes eliminar el segundo # en tu identificación.

tienes que usar \ cuando uses caracteres especiales

 var test1 = $('#test\\#1'); 

http://bugs.jquery.com/ticket/4944