En breve
$(document.getElementById("test:abc"))
es lo que debes usar.
Explicación : Además de la ganancia de velocidad (ver más abajo), es más fácil de manejar.
Ejemplo: digamos que tiene una función
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);
Velocidad / sincronización
Eche un vistazo a este jsbin que prueba y compara la velocidad de los métodos de selección de ID con dos puntos.
necesitas abrir tu consola firebug para obtener los resultados.
Lo probé con firefox 10 y jquery 1.7.2
básicamente hice una selección de 10.000 veces de un div con dos puntos en la identificación, con los diferentes métodos para lograrlo. Luego comparé los resultados con una selección de ID sin dos puntos, los resultados son bastante sorprendentes.
tiempo restante en el método selector de ms derecho
299 $("#annoying\\:colon")
302 $("[id='annoying:colon']"
20 $(document.getElementById("annoying:colon"))
71 $("#nocolon")
294 $("[id='nocolon']")
especialmente
71 $("#nocolon") and
299 $("#annoying\\:colon")
viene un poco como sorpresa