ошибка функции «не удалось найти»

#jquery #jquery-ui #plugins #jquery-plugins

#jquery #jquery-пользовательский интерфейс #Плагины #jquery-плагины

Вопрос:

У меня есть html-страница, которая добавляет ссылку на библиотеку jquery. Затем у меня появляется диалоговое окно, которое снова загружает библиотеку jquery.

На данный момент у меня есть плагин jquery # 1, который вызывает другой плагин jquery # 2, и я получаю сообщение об ошибке типа jquery pluging 2 не может быть найден.

Если я удалю ссылку на первую библиотеку jquery, все, похоже, заработает. Почему добавление второй ссылки на jquery (для диалогового окна) вызвало бы эту проблему? Как я могу решить?

Мой плагин (во внешнем файле определен как)

 (function ($) {

    $.fn.finder = function (optionsIn) {
               //do stuff   
               ..
              //2nd call to plugin this is where i get the error
              $(this).watermark('watermark');

    };
})(jQuery);
  

Плагин отлично работает на простой HTML-странице, однако, если я использую плагин в диалоговом окне, у него возникают проблемы с несколькими ссылками на библиотеку jquery.

Идеи?

Я использую плагин водяных знаков https://github.com/fabrikagency/fa-watermark при типичном использовании, подобном $('input').watermark('Enter your name.','my-custom-class');

Комментарии:

1. Покажите watermark определение. Кроме того, внутри функции `$.fn.func_name’ this находится объект jQuery. Поэтому не переносите это в другой объект jQuery.

2. Да, использование $ (this), кажется, подходит, когда плагин не используется в диалоговом окне (помните, что при реализации dialog основные ссылки ссылаются на библиотеку jquery, и диалоговое окно также ссылается на нее) .. все работает нормально, если я удаляю одну из ссылок на jquery, с чего бы это?

3. Вы должны включить плагин водяных знаков, прежде чем включать свой собственный файл внешнего скрипта, содержащий finder .

Ответ №1:

Спасибо за ввод. Это заставило меня очень внимательно следить за порядком загрузки элементов. Похоже, проблема заключалась в том, что мой плагин загружался до jquery. Это также отвечает на вопрос, почему, если я вставлю $ (‘inputelement’).Подключаемый модуль («) внутри $(document).готово (функция () { }); затем все заработало нормально. Это сработало, потому что он не пытался подключить плагин до тех пор, пока все не было загружено.