2011-02-07 46 views
1

我有一个页面被包含在PHP的任何地方,并且该页面使用jQuery 1.4.4。 (我会使用官方jQuery librarys源代码中的'最新',但是...) 我无法控制的是用户网站jQuery库的版本。 或即使用户拥有jQuery。如何:在同一页面上的两个不同的jQuery - 要包含的页面具有最新的jQuery

我做了一些测试,并将我的页面包含到拥有OLDER 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 }); 
    }); 

...(上代码只是例子)...更多代码........

}); 
</script> 

它只是不会工作。

有什么方法可以检查页面是否已经有jQuery?如果更老 - 激活新的代码 - 我的页面的Jquery库? 或...如何让新的'覆盖'旧的?

或者我做错了什么?我尝试了很多在网络上描述的建议,但没有结果。

在此先感谢! :)

回答

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版本的一些内部调用可能实际上是在最新的一。意识到。

+0

好的感谢您的快速响应。它失败。 – 2011-02-07 22:45:22

相关问题