我实际上没有在原型和jQuery的同时工作,但根据我的理解,您应该在原型脚本之前调用jQuery.noConflict()
。
试着改变你的文件头是这样的:
<head>
<script src="http://cdn.jquerytools.org/1.2.4/full/jquery.tools.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
<script type="text/javascript" src="http://prototypejs.org/assets/2009/8/31/prototype.js"></script>
<script type="text/javascript" src="http://www.warriorlabs.net/jScript/facebox/facebox.js"></script>
</head>
编辑:
也从第一行中删除jQuery.noConflict()
在facebox.js
因为它消除了由原型定义的$
功能。
边注:
写jQuery插件通常使用的方法是这样的:
(function($){
//Inside this block we know that $ == jQuery
//The global $ (i.e. window.$) might be something else
//By using this anonymous function we make sure we don't polute the global namespace
var v = "function scope";//this is a variable in the scope of the function
window.globalV = "global scope";//this is a global variable
$.fn.myPlugin = function(){
//my plugin code, usually something like:
return this.each(function(){
//do something with each element
$(this).show();
});
//returning this.each allows for chaining
}
})(jQuery);
在Chrome中我得到你的演示页面上此错误:
Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function [prototype.js:4598]
嘿,丹,我已将修复应用于页面。到目前为止,我仍然有同样的问题。你还有错误吗? – 2010-10-23 18:08:49
尝试从'facebox.js'中的第一行删除'jQuery.noConflict()'。 – 2010-10-23 18:25:36
试过这个。它不会改变任何东西,可能是因为facebox是用jQuery写的,而不是原型。事实上,在我的例子中,原型永远不会被“使用”,它只是在那里:)。所以我认为原型正在破坏jQuery或其他东西,可能并非如此。 – 2010-10-23 19:05:47