如何在另一个jQuery插件中包含一个外部插件

时间:2010-09-17 01:19:58

标签: javascript jquery jquery-plugins include

我正在为我正在开发的项目构建一个自定义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);

感谢Marko的建议......我可能做错了,因为我引用的插件没有被识别。以下是我的代码:

(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 个答案:

答案 0 :(得分:3)

您还可以使用jQuery中的getScript函数。

它可以与回调一起用于成功和/或失败,例如:

$.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");            

答案 1 :(得分:2)

当然 - 您可以创建一个新的脚本元素并将其附加到头部。

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

如果这不起作用,可以尝试this page上的方法,使用 setAttribute 的方法略有不同。