jQuery函数必须在正文中吗?

Posted

技术标签:

【中文标题】jQuery函数必须在正文中吗?【英文标题】:Does jQuery function have to be in the body? 【发布时间】:2013-03-30 20:35:19 【问题描述】:

我正在尝试根据旧的 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>

【问题讨论】:

你真的,真的不想运行两个独立的 jQuery 版本。你应该弄清楚为什么会这样并修复它,这样你就可以只运行一个 jQuery 版本。有一种管理方法可以使用 jQuery.noConflict() 和 jQuery 的替代符号同时运行两个版本,或者将一个版本限制在特定范围内,但需要知道你在做什么才能正确地做到这一点。 【参考方案1】:

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

通常您会将脚本放在head 标记中,而不是body 标记中。脚本通常只放在body 标记中,如果您希望它们比其他资源加载得晚,或者如果它们不使用readyload 事件,那么脚本必须放在它访问的元素之后.

(请注意,您发布的代码缺少脚本周围的script 标记,因此它只会在页面中显示它。)

【讨论】:

谢谢 Guffa,是的,我只是把它放在那里作为一个例子。我刚刚在 jQuery 网站上读到,这可能无法从页面的头部工作的原因是因为我需要 getElelmentByID()。我是否走在正确的道路上? 我的理解是,当我将脚本引用放在正文中时,它会使在较新版本上运行的横幅旋转器的功能无效或破坏(该脚本在头部) .更困难的是它们的设置完全不同。我一直在阅读 noConflict 但它不起作用,因为这两个插件的设置完全不同。 @JeremyWinslow:不,因为代码在ready 事件的事件处理程序中运行,所以在代码运行时所有元素都已加载。在加载元素之前绑定事件并不重要,因为事件是在加载所有元素之后触发的。 @JeremyWinslow:在使用事件的脚本中使用不同版本的jQuery很复杂,因为当loadready事件被触发时,@987654331只引用了一个版本的jQuery @ 和 $ 标识符,因此两个脚本无论如何都会使用相同的版本。您将需要重写一个脚本来为其自己的 jQuery 版本使用不同的标识符。 我明白了.. 再次感谢 Guffa。我正在尝试(我不是 js 人)重新编码菜单,因为它似乎更容易但是我找不到任何关于如何将这个旧版本升级到另一个旧版本的文档。我虽然也许可能将它们都重新编码为最新版本 1.9.1,但我已经无法使这种方法的主要功能之一出现问题。andSelft() 我用 .addBack() 替换了它并将更新 1.9.1相反,身体中的 jQuery 版本,我无法让它工作。我想我将不得不一点一点地挑选它,看看我是否能得到一些反应。【参考方案2】:

jQuery v1.9.1 适用于所有先前版本的 jQuery,无论他们声称不推荐使用哪些方法。您甚至不需要迁移指南脚本。

例如,这个脚本有

   .andSelf()

jQuery 表示被替换为

    .addBack(optional param)

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

【讨论】:

否,1.9.1 中删除了一些方法和对象。例如,browser 对象在 1.9 版中已被删除。 api.jquery.com/jQuery.browser【参考方案3】:

没有。您可以将它放在&lt;script type="text/javascript"&gt; &lt;/script&gt; 标签之间的任何位置。在此之前,如果您使用的是 jQuery,则必须加载 jQuery。

【讨论】:

以上是关于jQuery函数必须在正文中吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以将 JavaScript 函数存储在数组中吗?

函数声明可以出现在 JavaScript 的语句中吗?

函数声明可以出现在 JavaScript 的语句中吗?

您可以将函数存储在 PHP 数组中吗?

我应该将函数引用存储在 Redux 存储中吗?

C++ 静态模板函数可以在具有 C 链接的结构中吗?