jquery IDs con espacios

¿Alguien sabe cómo seleccionar un artículo en el DOM por ID con jQuery, cuando ese ID tiene un espacio?

Por ejemplo, la identificación de mi artículo sería

Stuff

¿Cómo seleccionaría esto con jQuery?

Si solo hago

 $("#content Module").whatever() 

jQuery intentará encontrar un elemento con el Id. de contenido y el ID del Módulo, que no es lo que estoy buscando.

Debo añadir que estoy trabajando con una base de código antigua donde estos identificadores de dos palabras se usan ampliamente, por lo que revisar y cambiar todos los ID sería malo.

Use un selector de atributos.

 $("[id='content Module']").whatever(); 

O mejor, especifique la etiqueta también:

 $("div[id='content Module']").whatever(); 

Tenga en cuenta que a diferencia de $ (‘# id’), esto devolverá múltiples elementos si tiene múltiples elementos con la misma identificación dentro de su página.

No use espacios, la razón para esto es simple, el carácter de espacio no es válido para el atributo de ID.

Los tokens de identificación 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 (“.”).

Pero si no te importan los estándares, prueba $("[id='content Module']")

Tema similar> ¿Cuáles son los valores válidos para el atributo id en HTML?

Editar: cómo id difiere entre HTML 4.01 y HTML5

HTML5 elimina las restricciones adicionales en el atributo de id. Los únicos requisitos que quedan, además de ser únicos en el documento, son que el valor debe contener al menos un carácter (no puede estar vacío) y que no puede contener ningún espacio de caracteres.

Enlace: http://mathiasbynens.be/notes/html5-id-class

Por si acaso alguien tiene curiosidad, descubrí que escapar del espacio funcionará, y probablemente funcione mejor. Esto es particularmente útil cuando no tienes control sobre el DOM objective (es decir, un userscript):

 $("#this\\ has\\ spaces"); 

Tenga en cuenta la doble barra invertida, que es necesaria.

El método sugerido por Chris puede probablemente adaptarse para funcionar con funciones jQuery.

 var element = document.getElementById('content Module'); $(element) ... ; 

Una idea para intentar:

 $("#content" +   + "Module").whatever() $("#content" + %20 + "Module").whatever() 

El punto y coma puede causar un error de javascript. También recomiendo cambiar la ID para que no tenga espacios.

Además, prueba document.getElementByID("content Module")

Esto funcionó para mí.

 document.getElementById(escape('content Module')); 

Si bien técnicamente no es válido tener un espacio en un valor de atributo de ID en HTML , en realidad puede seleccionarlo usando jQuery.

Ver http://mothereffingcssescapes.com/#content%20module :

  

jQuery usa una syntax tipo Selectors API, por lo que podría usar $('#content\\ module'); para seleccionar el elemento con id="content module" .

Para orientar el elemento en CSS, puede escapar de esta manera:

  

esto puede funcionar si quieres que el elemento tenga el valor exacto para la identificación

 $("[id='content Module']").whatever(); 

pero si desea verificar si el elemento tiene solo uno de ellos (igual que la clase) con o sin otros identificadores

 $("[id~='content']").whatever(); 

esto seleccionará el elemento si tiene id="content" o id="content Module" o id="content Module other_ids"

Encontré en mi caso que el escape no funcionó porque reemplaza los espacios con% 20. Usé reemplazar, por ejemplo, para reemplazar la h1 de la página con el texto de un elemento de la lista. Si el menú contiene:

 
  • Contact Us
  • function setTitle(menu) { $("h1").text( $("li#" + menu.replace(" ", "\\ ")).text() ); }

    Tenía problemas con los identificadores de elementos que contenían comas y / o espacios en jQuery, así que lo hice y funcionó a las mil maravillas:

    var ele = $(document.getElementById('last, first'));

    Esto tiene espacios y no funciona:

    var ele = $('#last, first');

    Esto tiene coma y no funciona:

    var ele = $('#last,first');