¿Alguien sabe cómo seleccionar un elemento en el DOM por ID con jQuery, cuando esa ID tiene un espacio?
Por ejemplo, la identificación de mi artículo sería
<div id="content Module">Stuff</div>
¿Cómo seleccionaría esto con jQuery?
Si solo lo hago
$("#content Module").whatever()
jQuery intentará encontrar un elemento con la ID del contenido y la ID del módulo, que no es lo que estoy buscando.
Debo agregar que estoy trabajando con una antigua base de código donde estos identificadores de dos palabras se usan ampliamente, por lo que revisar y cambiar todas las ID sería malo.
Respuestas:
Utiliza un selector de atributos.
O, mejor, especifique también la etiqueta:
Tenga en cuenta que, a diferencia de $ ('# id'), esto devolverá varios elementos si tiene varios elementos con la misma identificación dentro de su página.
fuente
No use espacios, la razón de esto es simple, el carácter de espacio no es válido para el atributo ID.
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 la identificación difiere entre HTML 4.01 y HTML5
Enlace: http://mathiasbynens.be/notes/html5-id-class
fuente
En caso de que alguien tenga curiosidad, descubrí que escapar del espacio funcionará. Esto es particularmente útil cuando no tienes control sobre el DOM objetivo (por ejemplo, desde un script de usuario):
Tenga en cuenta la doble barra invertida, que se requiere.
fuente
El método que Chris sugirió probablemente se pueda adaptar para trabajar con funciones jQuery.
fuente
Una idea para probar:
El punto y coma puede causar un error de JavaScript. También recomiendo cambiar la ID para no tener espacios.
Intenta también
document.getElementByID("content Module")
fuente
$(document.getElementByID("content Module"))
te daría un objeto jquery?Esto funcionó para mí.
fuente
Si bien es técnicamente inválido tener un espacio en un valor de atributo ID en HTML , en realidad puede seleccionarlo usando jQuery.
Ver http://mothereffingcssescapes.com/#content%20module :
jQuery usa una sintaxis similar a la API de Selectores, por lo que puede usar
$('#content\\ module');
para seleccionar el elemento conid="content module"
.Para apuntar al elemento en CSS, puede escapar de este modo:
fuente
Esto puede funcionar si desea que el elemento tenga el valor exacto para la identificación
pero si desea verificar si el elemento tiene solo uno de ellos (al igual que la clase) con o sin otros identificadores
esto seleccionará el elemento si tiene
id="content"
oid="content Module"
oid="content Module other_ids"
fuente
En mi caso, descubrí que escape no funcionaba porque reemplaza los espacios con% 20. Solía reemplazar, por ejemplo, para reemplazar el h1 de la página con el texto de un elemento de la lista. Si el menú contiene:
fuente
Estaba teniendo problemas con los identificadores de elementos que contienen comas y / o espacios en jQuery, así que hice esto y funcionó de maravilla:
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');
fuente
Escapar de cualquier carácter misceláneo en el selector (junto con espacios) .
fuente