2013-03-30 36 views
1

我想设置一个基于较旧的jQuery菜单的动画菜单。较旧的版本中,函数与jQuery版本引用链接一起直接放入主体。我遇到的问题是,该设置与我也想放在页面上的旋转横幅冲突。jQuery函数是否必须位于正文中?

实际上,目前它们不能同时运行。他们都在不同的jQuery版本上运行。

我得到了一些帮助把jQuery执行功能放到外部文件中,但是这并没有解决菜单问题,因为jQuery版本和调用必须在正文中引用才能工作。

我以前看过jQuery菜单,不需要直接放在body里面。或者他们呢?我知道下面是一个非常糟糕的方式来做它,因为它在页面的主体内部,加上它使用过时的jQuery版本,这就是为什么我要更新它使其更加稳固。

 <body> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript" src="jquery.easing.1.3.js"></script> 
     $(document).ready(function() { 
      $(function() { 
       $('#hn_menu > li').bind('mouseenter',function(){ 
       var $elem = $(this); 
       $elem.find('img') 
       .stop(true) 
       .animate({ 
        'width':'120px', 
        'height':'120px', 
        'left':'0px' 
       },400,'easeOutBack') 
       .andSelf() 
       .find('.hn_wrap') 
       blah blah blah 
      }); 
      }); 
     </body> 
+0

工作你真的不想运行两个单独的jQuery版本。你应该弄清楚为什么是这种情况,并解决它,所以你只能运行一个jQuery版本。有一种管理方式可以使用jQuery.noConflict()和jQuery的替代符号同时运行两个版本,或者将一个版本限制在特定范围内,但需要知道您正在做什么才能正确执行。 – jfriend00

回答

0

不可以。您可以将它放在<script type="text/javascript"> </script>标记之间的任何位置。在此之前,如果您使用jQuery,则必须加载jQuery。

1

不,脚本不必在体内b。在使用ready事件时,脚本可以位于页面的任何位置(当然,在加载jQuery库之后)。

通常情况下,您会在head标记中放置脚本,而不是body标记。如果您希望它们加载的时间比其他资源晚,或者它们未使用readyload事件,则脚本通常只放在body标记中,因此必须将它放置在它访问的元素之后。

(请注意:您发布的缺失周围的脚本script标签,所以它的代码将只在页面中显示出来。)

+0

谢谢Guffa,是的,我只是把它作为一个例子。我只是在jQuery网站上阅读,也许这是因为我需要getElelmentByID(),而不能从页面的头部开始工作。我在这条正确的道路上? – Autonomic

+0

我的理解是,当我将脚本引用放入正文中时,它将使新版本(该脚本处于头部)上运行的横幅旋转器的功能无效或被破坏。更困难的是他们都完全不同。我一直在阅读noConflict,但不会工作,因为再次,这两个插件设置完全不同。 – Autonomic

+0

@JeremyWinslow:不,因为代码在'ready'事件的事件处理程序中运行,所有元素在代码运行时已经被加载。在元素加载之前绑定事件并不重要,因为事件在所有元素加载后都会触发。 – Guffa

0

的jQuery v1.9.1的使用jQuery的所有先前版本的作品,无论是什么他们声称的方法已被弃用。您甚至不需要迁移指南脚本。

例如,此脚本有

.andSelf() 

jQuery的说,被替代为

.addBack(optional param) 

它可能已被替换,但addSelf()仍可使用新的1.9.1

+0

不,一些方法和对象在1.9.1中被删除。例如,浏览器对象在版本1.9中被删除。 http://api.jquery.com/jQuery.browser/ – Guffa

相关问题