Javascript Garmin prototype.js与本地jquery文件冲突
我有来自Garmin的prototype.js,它与我的jquery.frm.js冲突,如下面的代码片段所述Javascript Garmin prototype.js与本地jquery文件冲突,javascript,jquery,garmin,Javascript,Jquery,Garmin,我有来自Garmin的prototype.js,它与我的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"
<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>
它将抛出一个错误“UncaughtTypeError:undefined不是一个函数-jquery.frm.js”
下面是jquery.frm.js代码的一小段(因为太长了!)
var框架_PREFIX=“erpFrm”;
(函数($){
$.frm={
优先接受:新数组(0,1,2,3,4,5,6,7,8,9),
initFunctions:new Array(),
_孤岛加载:false,
/*
*分页变量
*/
当前页面:0,
物品价格:100,
分页偏移:3,
/*
*用于定义快速快进
*/
步幅:6,
选项:{},
秀:没错,
/**
*已加载运行页面的初始化函数
*@returns{undefined}
*/
init:function(){
for(var i=0;i
实际上document.ready不执行!这怎么可能
基本上,我尝试了两种解决方案——它们都应该在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>
(函数($){
$.getScript('/public/js/jquery.frm.js').done(函数(脚本,textStatus){
console.log(textStatus);
}).失败(功能(jqxhr、设置、异常){
console.log(异常);
});
})(jQuery);
此代码仍将返回相同的错误-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.noConflict();
jQuery(文档).ready(函数($){
$.getScript('/public/js/jquery.frm.js').done(函数(脚本,textStatus){
console.log(textStatus);
}).失败(功能(jqxhr、设置、异常){
console.log(异常);
});
});
同样的错误仍然存在
请给我一些关于如何解决问题的见解。您可以创建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文档:
(开始个人意见)我不建议简单地将jQuery分配给另一个短别名。每个人都想使用的这些JavaScript别名就像非常短的、糟糕的变量名。大多数开发人员建议在大多数情况下避免使用诸如“x”和“y”之类的变量名,尤其是当变量的作用域非常大时。使用“$”或“j”作为jQuery会使您的source更短,但这真的那么重要吗?在生产中使用之前,只需将代码运行到最小值即可
var j = jQuery.noConflict();
// Do something with jQuery
j( "div p" ).hide();
// Do something with another library's $()
$( "content" ).style.display = "none";