Как я выбираю элемент по ID, который имеет символы, используемые в нотации CSS?
Когда jQuery использует синтаксис CSS для того, чтобы выбирать элементы, некоторые символы интерпретируются как нотация CSS.
Например, атрибуты ID, после первой буквы (a-z или A-Z), могут также использовать периоды и двоеточия, в дополнение к буквам, числам, дефисам и подчеркиваниям (см. W3C Основные Типы данных HTML). Двоеточие (": ") и период (". ") проблематичны в контексте селекторов jQuery, потому что они указывают псевдокласс и класс, соответственно.
Чтобы заставить jQuery обрабатывать эти символы буквально, а не как нотацию CSS, они должны быть выделены, размещая две наклонных черты слева от них.
Не работает:
$( "#some:id" )
Работает!
$( "#some\\:id" )
Не работает:
$( "#some.id" )
Работает!
$( "#some\\.id" )
Следующая функция заботится о выделении этих символов и помещает "#" в начале строки ID:
function jq( myid ) {
return "#" + myid.replace( /(:|\.|\[|\])/g, "\\$1" );
}
Функция может использоваться например так:
$( jq( "some.id" ) )