In breve
$(document.getElementById("test:abc"))
è quello che dovresti usare.
Spiegazione : Oltre al guadagno di velocità (vedere più in basso), è più facile da gestire.
Esempio: supponi di avere una funzione
function doStuff(id){
var jEle = $("#" + id); //is not safe, since id might be "foo:bar:baz" and thus fail.
//You would first have to look for ":" in the id string, then replace it
var jEle = $(document.getElementById(id)); //forget about the fact
//that the id string might contain ':', this always works
}
//just to give an idea that the ID might be coming from somewhere unkown
var retrievedId = $("foo").attr("data-target-id");
doStuff(retrievedId);
Velocità / timing
dai un'occhiata a questo jsbin che verifica e confronta la velocità dei metodi di selezione degli ID con i due punti
è necessario aprire la console Firebug per ottenere i risultati.
L'ho provato con Firefox 10 e jquery 1.7.2
fondamentalmente ho fatto 10.000 volte selezionate di un div con due punti nell'id - con i diversi metodi per ottenerlo. Quindi ho confrontato i risultati con una selezione ID senza due punti, i risultati sono piuttosto sorprendenti.
tempo sinistro nel metodo di selezione destro ms
299 $("#annoying\\:colon")
302 $("[id='annoying:colon']"
20 $(document.getElementById("annoying:colon"))
71 $("#nocolon")
294 $("[id='nocolon']")
particolarmente
71 $("#nocolon") and
299 $("#annoying\\:colon")
arriva un po 'come una sorpresa