Как включить внешний плагин в другой плагин JQuery, созданный - PullRequest
6 голосов
/ 17 сентября 2010

Я создаю собственный плагин jQuery для проекта, над которым я работаю.Я хочу вернуть объект, свойственный другому плагину jQuery ... вместо того, чтобы убедиться, что на каждой странице, использующей мой плагин, также есть этот другой плагин, возможно ли включить его в сам плагин?

Вместо того, чтобы вводить следующее на каждой странице, которая использует мой плагин:

<script type="text/javascript" src="url_to_my_plugin" />
<script type="text/javascript" src="url_to_plugin" />

Я хотел посмотреть, есть ли опция, которая разрешает что-то вроде:

(function($) {
          $.include('url_to_plugin');
          //code to implement my plugin
})(jQuery);

Спасибо за предложение, Марко ... Возможно, я делаю что-то не так, потому что плагин, на который я ссылаюсь, не распознается.Ниже приведен мой код:

(function($) {
     var script = document.createElement('script');
     script.type = 'text/javascript';
     script.src = 'jquery.simplemodal.js'; //in same dir as my plugin
     //tried both
     document.body.appendChild(script);
     document.getElementsByTagName('head')[0].appendChild(script);

     $.fn.SUI_CheckProgress = function(options) {
          return this.each(function() {
               var obj = $(this);
               var nDiv = $('<div>');
               nDiv.modal(); //error nDiv.modal() is not a function
               $(obj).append(nDiv);
          }
     };
});

Я попытался объявить сценарий как внутри, так и снаружи фактического вызова функции (в идеале это должно происходить глобально).Я проверил, что код выполняется правильно, если я ссылаюсь на скрипт на странице, с которой я звоню, однако, когда я удаляю ссылку, он не работает.Любая дополнительная информация о программном добавлении скриптов на страницу будет принята.

Исправлено: Моя проблема заключалась в том, что я ссылался на тот же каталог, что и плагин js, однако, когда он был добавлен на страницуон находится за пределами этого каталога.

был

script.src = 'jquery.simplemodal.js';

исправлен

script.src = 'js/jquery.simplemodal.js';

Ответы [ 2 ]

3 голосов
/ 11 октября 2012

Вы также можете использовать функцию getScript из jQuery.

Может использоваться с обратными вызовами для успеха и / или неудачи, например:

$.getScript("somejs.js", function(data, textStatus, jqxhr) {
    console.log("callback");    
}

$.getScript("somejs.js")
.done(function(script, textStatus) {
    console.log("done callback");
})
.fail(function(jqxhr, settings, exception) {
    console.log("fail callback");
});      

Или без назначенияобратный вызов, как:

$.getScript("somejs.js");            
2 голосов
/ 17 сентября 2010

Конечно - вы можете создать новый элемент скрипта и добавить его в заголовок.

var script = document.createElement('script');
script.src = 'url-to-plugin';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);

Если это не сработает, возможно, попробуйте метод на этой странице , это немного другой подход с использованием setAttribute .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...