在我的工作中我总是必须使用jquery with prototype我可以使用库文件制作任何自定义jquery,就像我将添加头部,然后无需更改任何代码中的任何内容。
有可能吗?
我不想将代码$
中的任何内容更改为jQuery
。
答案 0 :(得分:3)
这就引出了一个问题:为什么不简单地在Prototype中实现所有东西 - 或者在jQuery中实现所有东西。总的来说,它们都具有相同的功能。
然而,要直接回答你的问题 - 这不是真正的一种自定义构建jQuery的方法。但是,您可以在包含jQuery库之后立即调用noConflict
。
然后对于你的东西,你可以简单地将它全部包装在
中(function($){
// your jQuery code here... Can be used with $ as normal.
})(jQuery);
在该函数中,您可以使用$
作为别名 - 除此之外,您需要使用jQuery
。这里唯一的问题是,如果你想要一个在这里定义的变量是全局的,你需要手动这样做,因为这里的所有内容都将作用于该函数。你可以这样做:
(function($){
window.myGlobalVar = 'This is a global variable';
})(jQuery);
答案 1 :(得分:3)
来自http://www.cssnewbie.com/runing-jquery-with-other-frameworks-via-noconflict/
保持简短
noConflict模式确实还有一些我在一些项目中发现有用的功能:你可以选择一个不同的变量而不是标准的“jQuery”。用法如下:
var $ j = jQuery.noConflict();
现在除了使用默认的jQuery()表示法之外,我还可以使用更短的$ j()表示法。这使我可以避免遇到其他框架的问题,同时仍然在我的代码中享受几乎相同的简洁。
答案 2 :(得分:0)
最好的事情通常是将$包装在私有范围内:
(function($) {
// jQuery stuff
})(jQuery)
您还可以在换行前调用jQuery.noConflict()
函数:http://api.jquery.com/jQuery.noConflict/
另一个干净的选项是将noConflict()
链接到domReady回调:
jQuery.noConflict()(function($){
// code using jQuery or $
});
console.log(typeof $ === 'undefined') // prints true
答案 3 :(得分:0)
要解决您是否可以拥有“包含一次”文件的问题,是的,您可以执行类似的操作:
/* MyLibLoader.js */
document.write("<script type='text/javascript' src='prototype.js'></script>");
document.write("<script type='text/javascript' src='jquery.js'></script>");
window.$j = jQuery.noConflict();
然后在HTML中
<head>
<script type='text/javascript' src='MyLibLoader.js'></script>
</head>
但是这种方法假设您很乐意将jQuery使用情况更改为$j