Alguém sabe como selecionar um item no DOM por ID com jQuery, quando esse ID possui um espaço?
Por exemplo, o ID do meu item seria
<div id="content Module">Stuff</div>
Como eu selecionaria isso com o jQuery?
Se eu apenas fizer
$("#content Module").whatever()
O jQuery tentará encontrar um item com o ID do conteúdo e o ID do módulo, que não é o que estou procurando.
Devo acrescentar que estou trabalhando com uma antiga base de código em que esses dois IDs de palavras são usados extensivamente, portanto, passar e alterar todos os IDs seria ruim.
Respostas:
Use um seletor de atributos.
Ou melhor, especifique também a tag:
Observe que, diferentemente de $ ('# id'), isso retornará vários elementos se você tiver vários elementos com o mesmo ID em sua página.
fonte
Não use espaços, o motivo é simples, o caractere de espaço não é válido para o atributo de ID.
Mas se você não se importa com os padrões, tente
$("[id='content Module']")
Tópico semelhante> Quais são os valores válidos para o atributo id em HTML?
Editar: como a identificação difere entre HTML 4.01 e HTML5
Link: http://mathiasbynens.be/notes/html5-id-class
fonte
Apenas no caso de alguém estar curioso, descobri que escapar do espaço funcionará. Isso é particularmente útil quando você não tem controle sobre o DOM de destino (por exemplo, dentro de um script de usuário):
Observe a barra invertida dupla, que é necessária.
fonte
O método sugerido por Chris provavelmente pode ser adaptado para trabalhar com funções jQuery.
fonte
Uma ideia para tentar:
O ponto e vírgula pode causar um erro de javascript. Também recomendo alterar o ID para não ter espaços.
Tente também
document.getElementByID("content Module")
fonte
$(document.getElementByID("content Module"))
lhe daria um objeto jquery?Isso funcionou para mim.
fonte
Embora seja tecnicamente inválido ter um espaço em um valor de atributo de ID em HTML , você pode realmente selecioná-lo usando o jQuery.
Consulte http://mothereffingcssescapes.com/#content%20module :
O jQuery usa uma sintaxe semelhante à API do Selectors, para que você possa usar
$('#content\\ module');
para selecionar o elemento comid="content module"
.Para direcionar o elemento em CSS, você pode escapar assim:
fonte
isso pode funcionar se você quiser que o elemento tenha o valor exato para o ID
mas se você quiser verificar se o elemento possui apenas um deles (como a classe) com ou sem outros IDs
isso selecionará o elemento se tiver
id="content"
ouid="content Module"
ouid="content Module other_ids"
fonte
Descobri no meu caso que o escape não funcionava porque substitui os espaços por% 20. Eu usei substituir, por exemplo, para substituir o h1 da página pelo texto de um item da lista. Se o menu contiver:
fonte
Eu estava tendo problemas com os IDs de elementos que continham vírgulas e / ou espaços no jQuery, então fiz isso e funcionou como um encanto:
var ele = $(document.getElementById('last, first'));
Isso tem espaços e não funciona:
var ele = $('#last, first');
Isso tem vírgula e não funciona:
var ele = $('#last,first');
fonte
Escapa de qualquer caractere variado no seletor (junto com espaços) .
fonte