Коротко
$(document.getElementById("test:abc")) это то, что вы должны использовать.
Пояснение : Помимо увеличения скорости (см. Ниже), с ним легче работать.
Пример: скажем, у вас есть функция
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);
Скорость / Сроки
взгляните на этот jsbin, который проверяет и сравнивает скорость выбора методов идентификаторов с двоеточиями
вам нужно открыть консоль firebug, чтобы получить результаты.
Я протестировал это с Firefox 10 и JQuery 1.7.2
в основном я выбрал 10'000 раз деления с двоеточием в идентификаторе - разными способами для достижения этого. Затем я сравнил результаты с выбором идентификатора без двоеточия, результаты довольно удивительны.
оставленное время в мс
299 $("#annoying\\:colon")
302 $("[id='annoying:colon']"
20 $(document.getElementById("annoying:colon"))
71 $("#nocolon")
294 $("[id='nocolon']")
особенно
71 $("#nocolon") and
299 $("#annoying\\:colon")
немного удивительно