奇怪的javascript / jquery行为

时间:2009-08-19 00:39:31

标签: javascript jquery

  

可能重复:
  Why don’t self-closing script tags work?

我在< head>里面有一些javascript代码元件。

<script src="jquery-1.3.2.js" type="text/javascript" />

<script type="text/javascript">
    $(document).ready(function() {
        $("#welcome").addClass("centered");
        $("#created").addClass("centered");
    });
</script>

在我使用显式结束脚本元素之前,它拒绝工作:

<script src="jquery-1.3.2.js" type="text/javascript"></script>

为什么会有区别?

编辑:整个标题是:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection" />
    <link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print" />
    <!--[if lt IE 8]><link rel="stylesheet" href="css/blueprint/ie.css" type="text/css" media="screen, projection" /><![endif]-->
    <link rel="stylesheet" href="css/blueprint/src/typography.css" />
    <link rel="stylesheet" href="css/common.css" />

    <script src="jquery-1.3.2.js" type="text/javascript" />

    <script type="text/javascript">
        $(document).ready(function() {
            $("#welcome").addClass("centered");
            $("#created").addClass("centered");
        });
    </script>
</head>

我不明白为什么script元素需要一个显式的end元素,但是link元素不是。

3 个答案:

答案 0 :(得分:3)

是的,你总是需要结束这样的脚本元素。它不支持'/&gt;'的XHTML格式结束标签。

答案 1 :(得分:2)

您的文档的文档类型是什么?像第一个例子那样技术上最小化的标签是仅限XML的东西。在大多数情况下,HTML允许它们,但正确的HTML是你的第二个例子。

答案 2 :(得分:1)

scriptiframe等某些元素在所有浏览器中都无法正常工作,除非您有结束标记,即使内部没有内容。虽然我同意这是愚蠢的,但它只是Web开发人员需要注意的那些不一致之处。

我认为一旦浏览器供应商实现实际 XHTML(因此我们可以将XHMTL作为application / xhtml + xml而不是text / html发送),那时他们也会修复这样的不一致。或许我只是一个乐观主义者。