Garmin prototype.js与本地jquery文件冲突
Garmin prototype.js conflicts with local jquery file
我有prototype.js从Garmin与我的jquery.frm.js冲突,如下面的代码片段所示。
<script src="/public/js/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="/public/js/jquery.frm.js"></script>
<script type="text/javascript" src="http://developer.garmin.com/web/communicator-api/prototype/prototype.js"></script>
它会抛出一个错误'Uncaught TypeError: undefined不是一个函数'下面是一小段jquery.frm.js代码(因为它太长了!)
var FRAMEWORK_PREFIX = "erpFrm";
(function( $ ){
$.frm = {
priorityAccepted : new Array(0,1,2,3,4,5,6,7,8,9),
initFunctions : new Array(),
_isLoading : false,
/*
* Pagination Variables
*/
currentPage : 0,
itemsPerPage: 100,
paginationOffset: 3,
/*
* Use to define fast ffward
*/
pace: 6,
options: {},
show: true,
/**
* Init function to run page is loaded
* @returns {undefined}
*/
init : function() {
for(var i=0; i < this.initFunctions.length; i++) {
this.initFunctions[i].callback();
}
return this;
} ....
})( jQuery );
$(document).ready(function() {
try {
$.frm.init();
} catch (e) {
console.log(e.message);
$.frm.showPopup(e.message);
}
});
文档。准备不执行!这怎么可能呢?
基本上我尝试了2个解决方案-两者都应该加载jquery.frm.js内的脚本和代码,这就是为什么我在函数内调用脚本或之后noConflict
第一个解决方案
<script>
(function($) {
$.getScript('/public/js/jquery.frm.js').done(function(script, textStatus) {
console.log(textStatus);
}).fail(function(jqxhr, settings, exception) {
console.log(exception);
});
})(jQuery);
</script>
这段代码仍然会返回相同的错误——undefined不是一个函数
第二个解决方案
<script>
jQuery.noConflict();
jQuery(document).ready(function($){
$.getScript('/public/js/jquery.frm.js').done(function(script, textStatus) {
console.log(textStatus);
}).fail(function(jqxhr, settings, exception) {
console.log(exception);
});
});
</script>
仍然存在相同的错误。
请告诉我如何解决这个问题。
您可以创建jQuery的别名并在脚本中使用。下面的示例代码来自jquery官方网站。希望能解决你的问题。
var j = jQuery.noConflict();
// Do something with jQuery
j( "div p" ).hide();
// Do something with another library's $()
$( "content" ).style.display = "none";
在脚本代码的顶部,使用jQuery.noConflict()
释放$
以供其他脚本使用,在本例中是prototype.js代码。详见jQuery noConflict文档:http://api.jquery.com/jquery.noconflict/.
(开始个人意见)我不建议简单地为jQuery分配另一个短别名。每个人都想使用的JavaScript别名就像非常短的、糟糕的变量名。大多数开发人员建议在大多数情况下避免使用像"x"answers"y"这样的变量名,特别是当变量的作用域非常大时。在jQuery中使用'$'或'j'可以使源代码更短,但这真的那么重要吗?在生产环境中使用代码之前,只需通过最小化器运行代码即可。(结束个人意见)
相关文章:
- 为什么jQuery文件的函数中有两个参数,但只接收一个参数
- 限制文件类型,大小,单次上传不'无法在jquery文件上传中工作
- 在jquery文件上传中调用默认的done函数
- 使用send时,jquery文件上传不调整图像客户端的大小
- JQuery文件上载未检测到动态添加的输入
- php文件中包含的jquery文件在服务器上不起作用
- jQuery文件上传崩溃的浏览器
- Blueimp jQuery文件上传音频/视频限制
- 如何在 elfinder(一个 jquery 文件管理器插件)中只显示文件夹列表
- 如何在 Blueimp jquery 文件上传器中发送 I 会话数据
- 如何使用javascript动态添加基于现有文件的jquery文件
- 带有自定义进度条的 JQuery 文件上传 (blueimp)
- 如何将jQuery文件添加到导航网站
- Drupal 7 将 jQuery 文件添加到所有页面
- 将变量从 php 文件发送到 jquery 文件
- jQuery文件上传代码和回调
- jQuery文件上传和验证未定义函数
- 引导程序jquery文件上传和laravel
- 命令代码jquery文件错误
- jQuery文件上传库:如何点击单个文件进行上传