Javascript 如何处理未捕获的TypeError:$(…)。加载两个jquery文件时,popover不是一个函数?
通用场景Javascript 如何处理未捕获的TypeError:$(…)。加载两个jquery文件时,popover不是一个函数?,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,通用场景 <script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> <script ty
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.7.2.min.js"></script>.
.
这将抛出未捕获的TypeError:$(…)。popover不是函数
我的场景
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.7.2.min.js"></script>.
我有一个使用其他应用程序的应用程序,它被其他应用程序使用
即A=“我的应用程序”
A通过在应用A中添加应用B的脚本文件来消耗B(角度应用)
A由C通过调用api消耗
我不能要求应用程序B和应用程序C团队更改代码。我如何处理这个问题?我以前也遇到过类似的问题,这是我的解决方案:
var j = jQuery.noConflict();
// Do something with jQuery
j( "div p" ).hide();
// Do something with another library's $()
$( "content" ).style.display = "none";
如果你能发布代码,这会有所帮助。我不确定我是否完全理解了所有内容。封装您的函数。这样,在封装函数的作用域中,$对象将始终是jQuery的同一版本,并且定义了相同的插件 当您跳出您的范围时(正如我在我的示例中使用doStuff时所做的那样),事情默认为全局对象,并且出于所有意图和目的,您已经丢失了对旧jquery对象的引用 如果您想在两个jquery对象上都加载插件,我建议在第二个jquery加载后,通过$.getScript()重新加载插件脚本。这不会导致额外的开销,因为浏览器将缓存这些文件 通过这种方式,您可以在一个页面上同时拥有多个版本的jquery、angular或其他任何变量,每个版本都在它自己的范围内,它完全不知道$、jquery或其他变量的状态:-) 这样做的好处是,您可以确定脚本加载的时间。将特定的库集合编译在一起,因为getScript有一个回调函数,它会告诉您它们何时完成。 完成所有脚本后,触发一个函数来执行其余代码,传递相关对象等 这样,您总是知道对象拥有什么,并且可以做什么:-)
(函数($){
$(document.body).append(“”);
$.getScript(“https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js“,函数(){
doStuff();
});
log(“封装的JQuery版本”,$.fn.JQuery);
})(jQuery)
函数doStuff(){
log(“jqueryversionglobal”,$.fn.JQuery);
}
img{宽度:100%;高度:100%;}
你能给我们看一下你的代码吗?它分散在几个地方,可以执行现在你已经声明了var j=jQuery.noConflict();在你的应用程序中。如果有人在他们的代码中使用你的应用程序,它将抛出$不是函数