我正在为我正在开发的项目构建一个自定义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';
答案 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 的方法略有不同。