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
有一种隐藏真实东西的方法。