Хорошо. Я отвечаю на свой вопрос сейчас.
Я считал мю слишком коротким подходом, но он не совсем подходит. Мой коллега предложил следующее:
Мы создаем новый экземпляр jQuery следующим образом:
var $$$ = $.extend( true, function(selector, context) {
return new $$$.fn.init( selector, context );
}, $);
$$$.fn = $$$.prototype = jQuery.prototype;
И мы создаем закрытие плагинов для функции $
(поскольку в плагине используется $
):
(function($) {
... plugin code goes here ...
$.fn.extend({
myplugin: function(maybe_some_options) {
...
})($$$);
Теперь мы можем звонить $$$(<selector>).myplugin( { do : 'great job', and : 'be happy' } );
и $(<selector>).myplugin()
одновременно.
У нас пока нет проблем с этим подходом, и я не вижу причин, почему он сломается, поэтому мы решили пойти на это решение.