Prototype和jQuery与$ .when.apply冲突

我已经尝试了多种代码使用组合,以使Prototype和jQuery工作,但还没有运气。

这是我目前的情况。

index.html的:

  ` 

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不是函数。

单击错误文件链接时,它指向element.dispatchEvent(event); 在prototype.js文件中,行号7066。

任何帮助表示赞赏。

谢谢。

编辑:我已经将MAIN_JS_FILE.js文件更改为仅使用jQuery而不是$所以现在没有单个javascript代码使用$并且仍然显示undefined错误。

如果我现在使用jQuery.noConflict();.ready()函数之前, $.when.apply代码甚至都没有执行。

正如@steven iseki在评论中提到的那样,可以使用jQuery.noConflict 。 您可以在他们的网站上阅读:

许多JavaScript库使用$作为函数或变量名,就像jQuery一样。 在jQuery的情况下,$只是jQuery的别名,因此所有function都可以在不使用$的情况下使用。

Prototype也确实使用了$ sign。

另外,请记住在jQuery代码中使用jQuery而不是$ sign,例如:

 jQuery(selector).on('click', function(){...}); 

我认为这里没有jQuery Conflict错误。 尝试从main.js更改代码。 尝试使用其他方法在此处完成任务。 我分析了你的代码,但prototype.js有一种隐藏真实东西的方法。