繁体   English   中英

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

[英]How to include an external plugin inside of another jQuery plugin being authored

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

您还可以使用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");            

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM