理想情况下,我希望包含插件的js文件也包括jquery库。
我玩了几个没有成功的机制,XHR脚本注入和基本脚本注入,如:
myplugin.js:
var scriptElem = document.createElement('script');
scriptElem.src = 'jquery-1.6.1.js';
document.getElementsByTagName('head')[0].appendChild(scriptElem);
(function() {
jQuery.fn.myplugin = function() {
...
}
})();
但当然 jQuery 不会及时定义。
有什么建议吗?
答案 0 :(得分:4)
我不确定这是否是最好的做法,我个人会将jQuery包含在使用我的插件的开发人员中。
但如果你坚持......:)
你应该使用2个文件,一个是你的插件,另一个只是一个加载器:
myplugin_loader.js
var scriptElem;
if(!window.jQuery){
// Include jQuery if it's not already loaded
scriptElem = document.createElement('script');
scriptElem.src = 'jquery-1.6.1.js';
scriptElem.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(scriptElem);
}
// Include the main plugin after jQuery
scriptElem = document.createElement('script');
scriptElem.src = 'myplugin.js';
scriptElem.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(scriptElem);
myplugin.js
(function() {
jQuery.fn.myplugin = function() {
...
}
})();
如果肯定加载了jQuery,您可以使用myplugin.js
,如果有疑问,请加入myplugin_loader.js
。虽然正如我所说,我会建议反对它。
答案 1 :(得分:3)
你不应该在你的插件中包含jquery jQuery是使用插件的要求或依赖。你应该从不将它包含在你的插件中!如果你包括它,这将迫使用户使用特定版本的jquery,甚至可能导致问题。
答案 2 :(得分:0)
将jquery库复制到与插件相同的文件的顶部?
请注意,如果您采用此(不推荐的方法),则应使用noConflict并将一些个人变量分配给jquery引用,例如。
var $myjQuery = jQuery.noConflict();
并在您的插件中使用此引用,而不仅仅是$或jQuery