【问题标题】:Why can't I add a <br /> with JQuery .html?为什么我不能用 JQuery .html 添加一个 <br />?
【发布时间】:2010-01-31 22:03:32
【问题描述】:

为什么这段代码有效:

$('div.error_container').html('<div class="error">No more foo allowed</div>');

但是这段代码会导致错误:

$('div.error_container').html('<div class="error">No more foo allowed<br /></div>');

我尝试将&lt;br /&gt; 放在&lt;/div&gt; 标记之前和之后,同样的错误。我尝试将其从&lt;br /&gt; 更改为&lt;br&gt;。 Chrome 总是在检查器中显示以下内容:

Uncaught SyntaxError: Unexpected token ILLEGAL

【问题讨论】:

    标签: jquery html dom


    【解决方案1】:

    试着把它分解成一个链:

    var $div = $('<div class="error"></div>').html('No more foo allowed')
                                             .append('<br />');
    $('div.error_container').html($div);
    

    【讨论】:

    • 做到了。我想知道为什么,但现在我很高兴它有效。
    • 奇怪的是,我今天遇到了类似的问题(带有 br 标签),并将其分解为小步骤解决了它。我也想知道为什么 jQuery 不喜欢创建/附加包含换行符的元素。
    • 我觉得其他人对 doctype 角度的看法是正确的。
    • 有谁知道它为什么会有这种行为?
    【解决方案2】:

    这对我来说非常适合:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
      $('div.error_container').html('<div class="error">No more foo allowed<br /></div>');
    });
    </script>
    </head>
    <body>
    <div class="error_container">
    </div>
    </body>
    </html>
    

    在 Chrome 和 Firefox 中。你用的是什么版本的jQuery?

    附带说明&lt;br /&gt; 是 XML(包括 XHTML)而不是 HTML。 HTML 是 &lt;br&gt;

    【讨论】:

    • 再读一遍我的问题,cletus。尤其是我说“我努力 [原文如此] 将其从
      更改为
      ”的部分。
    • 如果上述方法不起作用(您明确表示“尝试”;)),则改为 try &lt;br&gt;&lt;/br&gt;
    • 我也试过那个。有趣的是,我使用

      还是
      似乎并不重要,在所有情况下,浏览器都会报告它得到了
      ,并给了我错误。
    • 我可能应该提到这实际上是在一个 XSL 文档中,它在服务器端解析(不要问)并作为 html 发送到客户端。从 xml 到 html 的转换可能是罪魁祸首,但将其分成两部分似乎已经解决了它。
    【解决方案3】:

    我尝试了以下SSCCE,它在 IE、FF、Safari、Opera 和 Chrome(所有最新版本)中都能完美运行。

    所以您的问题可能与您声明的文档类型或使用旧版本的 Chrome 有关。

    <!doctype html>
    <html lang="en">
        <head>
            <title>SO question 2173556</title>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
            <script>
                $(document).ready(function() {
                    $('#foo').html('<div>foo<br>foo</div>');
                    $('#bar').html('<div>bar<br/>bar</div>'); // Yes, that's illegal in HTML strict. Just to test :)
                });
            </script>
            <style>
    
            </style>
        </head>
        <body>
            <div id="foo"></div>
            <div id="bar"></div>
        </body>
    </html>
    

    【讨论】:

      【解决方案4】:

      我也有类似的问题,不确定是否相关。我正在为 cms 做 c# mvc。

      所以我有一些来自用户的 html 输入,我使用 "@Html.Raw(Modal.Content)" 显示它们

      在 Modal.Content 中有一个 &lt;br /&gt;,我在使用 jquery .html("@Html.Raw(Modal.Content)") 将该内容附加到 html 时遇到问题

      但最终问题不是&lt;br /&gt;

      有一个看不见的\n,所以我做了.html("@Html.Raw(Modal.Content).Replace("\n", "")"),问题就解决了。 &lt;br&gt; 保留在我的内容中,并且按预期工作。

      【讨论】:

        【解决方案5】:

        我遇到了类似的问题,它与将 jquery 链接到我的 HTML 文件有关(脚本标签不是最新的)。

        (一些较新的功能与旧版本的 Jquery 不兼容,因此在使用 Jquery 时,我们应该始终拥有最新的链接。 SDN 链接应如下所示:

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2012-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多