我尝试过使用多种代码组合来使Prototype和jQuery工作,但是没有运气。
这是我目前所拥有的。
的index.html:
<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js"></script>
<script src="http://code.jquery.com/jquery.js"></script>
<script src="MAIN_JS_FILE.js"></script>`
main_js_file.js:
jQuery(document).ready(function() {
var jsq = [];
jsq.push(AJAX_CALL_FOR_FETCHING_JS_FILE_1);
jsq.push(AJAX_CALL_FOR_FETCHING_JS_FILE_2);
jsq.push(AJAX_CALL_FOR_FETCHING_JS_FILE_3);
var deferredjs = jQuery.when.apply(jQuery, jsq);
deferredjs.done(function() {
//Various variable initialization
//Various function definition.
}
});
现在,当加载页面(页面正确加载)时,chrome控制台会显示错误消息:
未捕获的TypeError:undefined不是函数。
单击错误文件链接时,它指向prototype.js文件中的element.dispatchEvent(event);
,第7066行。
感谢任何帮助。
感谢。
修改:我已将MAIN_JS_FILE.js
文件更改为仅使用jQuery
而非$
现在,没有一个使用$
的JavaScript代码,但仍会显示undefined
错误。
如果我现在在jQuery.noConflict();
函数之前使用.ready()
,那么$.when.apply
代码甚至都不会执行。
答案 0 :(得分:1)
在评论中提及的@steven iseki
,您可以使用jQuery.noConflict
。您可以在他们的网站上阅读:
许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。
确实Prototype
使用$
符号也是如此。
另外,请记住在jQuery代码中使用jQuery
代替$
符号,例如:
jQuery(selector).on('click', function(){...});
答案 1 :(得分:0)
我不认为这里有jQuery Conflict
错误。尝试从main.js
更改您的代码。尝试使用其他方法在此完成任务。我分析了你的代码,但prototype.js
有一种隐藏真实内容的方法。