Вы можете изменить функцию $.fn.init
, чтобы изменить поведение jQuery, но нет быстрого и простого способа убедиться, что идентификаторы с точками в них безопасны во всем приложении.Быстрое и грязное решение заменит все .
с \\.
, изменив функцию init
, но тогда все ваши селекторы класса сломаются.
Единственный надежный способ сделать это - передать идентификаторы с экранированными точками всем вашим плагинам.
РЕДАКТИРОВАТЬ
Если вы действительно хотите быстрое и грязное решение, вот то, которое по крайней мере будет работать, если у вас нет чего-то вроде #id.class
.Это будет работать для #id .class
(промежуток между ними).
(function($){
$.fn._init = $.fn.init;
$.fn.init = function ( selector, context, rootjQuery ) {
if (typeof selector == 'string' && selector.match('#')) {
selector = selector.replace(/\#([^\s\.]*)\./g, '#$1\\.')
}
return new $.fn._init(selector,context,rootjQuery);
}
})(jQuery);