如何:同一页面上有两个不同的jQuery-要包含的页面具有最新的jQuery

如何:同一页面上有两个不同的jQuery-要包含的页面具有最新的jQuery,jquery,Jquery,我在wish的任何地方都有一个PHP页面,该页面使用jQuery1.4.4。 (我甚至会使用官方jQuery库的“最新”源代码,但是…) 我无法控制的是用户网站jQuery库的版本。 或者即使用户有jQuery 我做了一些测试,并将我的页面包含到有较旧jQuery的站点中,结果出现了冲突 这是要包含的脚本的示例。我做不到: …php代码 …html头 <script type="text/javascript"> var jQ144 = jQuery.noConflict(

我在wish的任何地方都有一个PHP页面,该页面使用jQuery1.4.4。 (我甚至会使用官方jQuery库的“最新”源代码,但是…) 我无法控制的是用户网站jQuery库的版本。 或者即使用户有jQuery

我做了一些测试,并将我的页面包含到有较旧jQuery的站点中,结果出现了冲突

这是要包含的脚本的示例。我做不到:

…php代码

…html头

    <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 });
    });
var jQ144=jQuery.noConflict(true);
jQ144(文件).ready(函数($){
$(“.helpPlease”).hover(函数(){
$(this.animate({height:'250px'},{queue:false,duration:400});
},函数(){
$(.helpPlease”).animate({height:'17px'},{queue:false,duration:400});
});
…(上面的代码只是示例)….更多代码

});
</script>
});
这就是行不通

有没有办法检查页面是否已经有jQuery?如果是旧代码-激活新代码-我的页面的Jquery库?? 或如何使新的“覆盖”旧的

还是我做错了什么?我尝试了许多在网上描述的建议,但没有结果


提前感谢!:)

当您包含jQuery时,它接受
$
变量并创建
jQuery
类<代码>$恰好是对jQuery的引用。因此,当您包含较旧/不同版本的jQuery时,它实际上是在“覆盖”(替换)jQuery类

经过测试,这是有效的:(删除noConflict调用中的
true
参数)


jQuery.noConflict()
jQuery144=jQuery
log(jQuery144,jQuery)
jQuery144(函数($){
log(“hello”,$.fn.jquery)
})
jQuery(函数($){
log(“world”,$.fn.jquery)
})

编辑2:你需要记住一个重要的问题。在内部,jQuery将自己称为
window.jQuery
。当您再次包含jQuery时,您正在重新定义
窗口。jQuery
,但在第一个版本中进行的调用是在运行时绑定的,而不是在定义时绑定的,因此,最旧jQuery版本的一些内部调用可能会在最新版本中实际进行。请注意。

Gracias Gonzalo。嗯,请你解释一下,看起来不错,但正如我说的:我不知道有什么图书馆在等我的页面。假设我的页面上有来自Jquery站点的最新Jquery,那么如何使其工作?我重复一遍。我无法触摸,也不知道jQuery脚本是什么。而且根本不应该有冲突。现在,如果我的页面没有jQ,那么它在任何有jQ的页面上都非常有效(如果没有jQ,则不会),但是如果我的页面有最新的jQ:外部页面会被破坏。。。如果您确保使用内部不引用window.jQuery的函数,那么应该首先包括jQuery版本(最新版本),然后包括其余代码。否则,您可以加载最后一个jQuery版本,并将所有出现的“jQuery”替换为另一个var,然后您将确保所有这些都可以正常工作。但是当你想更新jQuery时,你必须再做一次:-)哦,还要考虑插件!哇哇!!!对我检查了我所有的页面,并按照你说的做了更改。noConflict调用中的真正参数乱七八糟!现在它工作了!这里有一个提醒:
jQuery.noConflict()jQuery144=jQuery jQuery144(文档)。准备好(函数($){$(函数({$)(($form.logForm#submitLog”)。点击(函数({……
code…code…code…code。谢谢!你拯救了地球!)
<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>