我有一个页面要包含在愿望的任何地方,并且该页面使用jQuery 1.4.4。 (我将使用官方jQuery图库来源中的“最新”,但......) 我无法控制的是用户网站jQuery库的版本。 或者即使用户拥有jQuery。
我已经做了一些测试,并将我的页面包含在具有OLDER jQuery的网站中 - 并且发生了冲突。
这是要包含的脚本的示例。我无法做到这一点:
.... php code ....
.... html head .....
<script type="text/javascript"> var jQ144 = jQuery.noConflict(true);</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
jQ144(document).ready(function($){
$(".helpPlease").hover(function(){
$(this).animate({height:'250px'}, { queue:false, duration:400 });
},function(){
$(".helpPlease").animate({height:'17px'}, { queue:false, duration:400 });
});
...(上面的代码只是例如)...更多代码........
});
</script>
它不起作用。
有没有办法检查页面是否已经有jQuery?如果更旧 - 激活更新的代码 - 我的页面的Jquery库? 或者......如何让新的'覆盖'旧的?
或者我做错了什么?我尝试了很多在网络上描述但没有结果的建议。
提前致谢! :)
答案 0 :(得分:3)
当您包含jQuery时,它需要$
变量并且创建jQuery
类。 $
恰好是对jQuery的引用。因此,当您包含较旧/不同版本的jQuery时,它实际上是“覆盖”(替换)jQuery类。
经测试,这可行:(删除noConflict调用中的true
参数)
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict( )
jQuery144 = jQuery
console.log(jQuery144, jQuery)
</script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript">
jQuery144(function($) {
console.log("hello", $.fn.jquery)
})
jQuery(function($) {
console.log("world", $.fn.jquery)
})
</script>
</head>
<body>
</body>
</html>
编辑2:您需要考虑一个重要问题。在内部,jQuery将自己称为window.jQuery
。当您再次包含jQuery时,您正在重新定义window.jQuery
,但是在第一个版本中进行的调用在运行时绑定,而不是在定义时间绑定,因此最旧的jQuery版本的某些内部调用可能实际上是在最新的一个。请注意。