【问题标题】:What do you need to make the most basic jQuery script run?运行最基本的 jQuery 脚本需要什么?
【发布时间】:2016-01-01 05:34:46
【问题描述】:

我在 head 标签中有这个:<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.js"></script> 以便加载 jquery。

然后我在结束正文标记之前有这段代码:

$(document).ready(function() {
  alert("Ready");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

这个脚本在 jsfiddle 中工作,但是当我尝试在我的浏览器(Firefox 和 Chrome)中运行它时它不起作用。我尝试从本地文件运行它,然后上传到我的网站以防万一。

那么还有什么可能导致这个简单的脚本无法运行?

已解决:使用快捷方式“$(function())”在文档就绪事件上运行了另一个脚本。我没有意识到你不能在不同的脚本中使用它两次。谢谢大家的帮助!

【问题讨论】:

  • 控制台有错误吗??
  • 只是一个猜测 - 你的 jquery 是在这个函数之后加载的吗?您需要在任何 jQuery 运行之前加载 jQuery 本身,以便它识别它。
  • 这是唯一可能相关的:“HTML 文档的字符编码未声明。如果文档包含来自美国以外的字符,则在某些浏览器配置中,该文档将呈现乱码文本-ASCII 范围。页面的字符编码必须在文档或传输协议中声明。"
  • @itamar 我对脚本的加载顺序并不完全肯定,但我有在头部加载 jquery 的链接和我试图在正文中运行的脚本,所以我认为它应该被加载。
  • @JamesSmith 你能显示 HTML 吗?

标签: javascript jquery browser


【解决方案1】:

您的问题在于您的其他脚本。 Javascript 的另一部分正在产生错误,应该在您的控制台中可见。

这是一个示例,显示您可以多次绑定到文档就绪事件。我什至会使用多种语法。

// The first three examples are syntactically identical. They will fire in
// the order in which they appear, also known as FIFO or First In, First Out.
$(document).ready(function() {
    alert("Ready one");
});

$(function() {
    alert("Ready two");
});

jQuery(document).ready(function($) {
    alert("Ready three");
});

// Note: this syntax should fire first, only requires the jQuery object be loaded
(function($) { 
    alert("Ready four");
})(jQuery);

// and for good measure...this syntax should always fire last
$(window).load(function() {
    alert("Ready five");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

如果我想重新创建 OP 的问题,我只需在第一个事件处理程序中创建一个异常。

$(document).ready(function() {
    alert("Ready one");
    // creating an error here should halt execution before the second function begins
    throw "some error";
});

$(function() {
    alert("Ready two");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

为了证明这一点,这里是完全相同的 sn-p,但投掷线已被注释掉,并且可以正常工作。

$(document).ready(function() {
    alert("Ready one");
    // creating an error here should halt execution before the second function begins
    //throw "some error";
});

$(function() {
    alert("Ready two");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

【讨论】:

    【解决方案2】:

    使用快捷方式“$(function())”在文档就绪事件上运行了另一个脚本。我没有意识到你不能在不同的脚本中使用它两次。谢谢大家的帮助!

    【讨论】:

    • 这肯定不能解决真正的问题,这可能是另一个脚本抛出异常。您确实可以将多个函数绑定到文档就绪事件,并且它们将以 FIFO 顺序运行,除非异常停止脚本。
    • @matpop 同意。您绝对可以拥有多个实例。您可以多次绑定到任何事件。这就是事件驱动脚本的美妙之处。
    • 不,你绝对可以有多个 ready 事件处理程序,无论语法如何。
    【解决方案3】:

    它应该工作。尝试将 type="text/javascript" 添加到脚本标签。并确保您的自定义脚本是在您加载 jquery.js 之后

    【讨论】:

    • 问题指出加载 jquery 的脚本标签位于 head ... 并且用户脚本位于 body 的底部 ...所以,您的答案的第二部分是多余的
    • 所有现代浏览器都假定 "text/javascript" 。 HTML5 甚至不需要它。
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2018-11-14
    • 2015-10-12
    • 2015-12-08
    • 2017-09-22
    相关资源
    最近更新 更多