ID jquery con spazi

Qualcuno sa come selezionare un elemento nel DOM per ID con jQuery, quando quell’ID ha uno spazio?

Ad esempio, l’ID del mio articolo sarebbe

Stuff

Come selezionerei questo con jQuery?

Se lo faccio e basta

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

jQuery proverà a trovare un object con l’ID del contenuto e l’ID del modulo, che non è quello che sto cercando.

Devo aggiungere che sto lavorando con una vecchia base di codice in cui questi due termini sono usati estesamente, quindi passare e modificare tutti gli ID sarebbe negativo.

Usa un selettore di attributi.

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

Oppure, meglio, specifica anche il tag:

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

Nota che diversamente da $ (‘# id’), questo restituirà più elementi se hai più elementi con lo stesso id all’interno della tua pagina.

Non utilizzare spazi, il motivo è semplice, il carattere spazio non è valido per l’attributo ID.

I token ID devono iniziare con una lettera ([A-Za-z]) e possono essere seguiti da un numero qualsiasi di lettere, cifre ([0-9]), trattini (“-“), trattini bassi (“_”), due punti (“:”) e periodi (“.”).

Ma se non ti preoccupi degli standard, prova $("[id='content Module']")

Thread simile> Quali sono i valori validi per l’attributo id in HTML?

Modifica: come l’ID differisce tra HTML 4.01 e HTML5

HTML5 elimina le restrizioni aggiuntive sull’attributo id. Gli unici requisiti rimasti – oltre a essere unici nel documento – sono che il valore deve contenere almeno un carattere (non può essere vuoto) e che non può contenere spazi.

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

Nel caso qualcuno fosse curioso, ho scoperto che la fuga dallo spazio funzionerà e probabilmente funziona meglio. Ciò è particolarmente utile quando non si ha il controllo sul DOM di destinazione (cioè un userscript):

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

Nota il doppio backslash, che è richiesto.

Il metodo suggerito da Chris può essere probabilmente adattato per funzionare con le funzioni di jQuery.

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

Un’idea da provare:

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

Il punto e virgola potrebbe causare un errore javascript. Raccomando anche di cambiare l’ID per non avere spazi.

Inoltre, prova document.getElementByID("content Module")

Questo ha funzionato per me.

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

Sebbene sia tecnicamente non valido avere uno spazio in un valore di attributo ID in HTML , puoi selezionarlo usando jQuery.

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

  

jQuery usa una syntax API-Select dei selettori, quindi puoi usare $('#content\\ module'); per selezionare l’elemento con id="content module" .

Per scegliere come target l’elemento in CSS, puoi sfuggire in questo modo:

  

questo può funzionare se vuoi che l’elemento abbia il valore esatto per l’id

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

ma se vuoi controllare se l’elemento ne ha solo uno (proprio come la class) con o senza altri ID

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

questo selezionerà l’elemento se ha id="content" o id="content Module" o id="content Module other_ids"

Ho trovato nel mio caso che la fuga non ha funzionato perché sostituisce gli spazi con% 20. Ho usato invece sostituire ad esempio per sostituire l’h1 della pagina con il testo di una voce di elenco. Se il menu contiene:

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

    Stavo avendo problemi con gli id ​​degli elementi contenenti virgole e / o spazi in jQuery, quindi l’ho fatto e ha funzionato come un incantesimo:

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

    Questo ha spazi e non funziona:

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

    Questo ha una virgola e non funziona:

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