jQuery插件文件,包括jQuery库

时间:2011-06-03 10:33:02

标签: javascript jquery jquery-plugins

理想情况下,我希望包含插件的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 不会及时定义。

有什么建议吗?

3 个答案:

答案 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