【问题标题】:Can't call repetitive js from external file?不能从外部文件调用重复的js?
【发布时间】:2013-08-07 06:14:21
【问题描述】:

我有一个网站here

我有这个脚本,它调用适当的函数来使便笺工作......

//Functionality for Sticky Notes 
    $(function() {
        $("#content").stickynote({
            size             : 'large',
            containment      : 'content',
            event            : 'dblclick',
            color            : '#de5900'                
            });


        $("#newsticky").stickynote({
            size             : 'large',
            containment      : 'content',
            color            : '#de5900'
            });
        });

这不是一段重复的 javascript,但我试图将所有这些头脚本放在一个文件中。你可以看到我已经有几个了。您可以查看文件here

当我将文件加载到索引页面here 时,脚本会被适当地调用(jquery 菜单和两个不同的滑块)。

当我在 Sticky Notes 页面上调用同一个文件时,除了 jquery 菜单无法正常工作之外,我无法调用。

我在页面底部调用相同的脚本(</body> 标记之前...

<!-- All DOM Ready Scripts -->
<script type="text/javascript" src="js/scripts.js"></script>

不知道我做错了什么。

【问题讨论】:

  • 您是否将 jquery.js 包含在它不起作用的页面上?我注意到您在 webfro.gs/south/kb2/notes.html 页面上包含了两个不同版本的 jquery,版本 1.7.1 和 1.3.2,所以这可能会导致一些问题。然后在您的其他页面上包含 jQuery 版本 1.9.1 - 您可能会更好地确定您需要哪个版本并在任何地方坚持使用它。 (另外,它不会导致问题,但在您的 scripts.js 中,您可以将代码组合成一个 $(document).ready(...) 处理程序。)
  • P.S.打开浏览器的 JavaScript 控制台(Chrome 中的 ctrl-shift-j)并查看是否报告了任何错误。
  • @nnnnnn 我将不得不花一些时间在那个上面。便签的功能适用于 1.3.2,但不适用于 1.9.1。您对如何更新我的代码以使其与 1.9.1 兼容有任何想法吗?

标签: javascript dom domready


【解决方案1】:

尝试从$(function() { }); 中取出代码块 此外,如果 DOM 已准备好(即,如果您在文件底部包含脚本,并且到那时所有节点都在 DOM 中) - 那么您不需要将您的 bannerRotators 放在$(document).ready(function() {});

你的代码应该是这样的:

$("#rotator1").bannerRotator({...});
$("#rotator2").bannerRotator({...});
$("#content").stickynote({...});
$("#newsticky").stickynote({...});

【讨论】:

  • 即使准备处理程序是不必要的(尽管在这种情况下我认为它是必需的,因为脚本包含在头部中)为什么它实际上会停止代码工作?
  • 你是对的,准备好的处理程序不应该阻止脚本工作。我只是想简化代码。提到的原始问题包括页面底部的脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 2021-01-11
相关资源
最近更新 更多