为什么可以';t我添加一个<;br/>;用JQuery.html?

为什么可以';t我添加一个<;br/>;用JQuery.html?,jquery,html,dom,Jquery,Html,Dom,此代码为何有效: $('div.error_container').html('<div class="error">No more foo allowed</div>'); 这对我来说非常有效: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html&g

此代码为何有效:

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

这对我来说非常有效:

<!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>

$(函数(){
$('div.error_container').html('No more foo allowed
'); });
在Chrome和Firefox中。您使用的jQuery版本是什么


另一方面,XML(包括XHTML)不是HTML。HTML是

尝试将其拆分为一个链:

var $div = $('<div class="error"></div>').html('No more foo allowed')
                                         .append('<br />');
$('div.error_container').html($div);
var$div=$('').html('不允许再使用foo')
.append(“
”); $('div.error_container').html($div);
我尝试了以下方法,在IE、FF、Safari、Opera和Chrome(所有最新版本)中都能完美地工作

因此,您的问题可能与您声明的doctype或使用旧版本的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>

所以问题2173556
$(文档).ready(函数(){
$('#foo').html('foo
foo'); $('#bar').html('bar
bar');//是的,这在html中是非法的。只是为了测试:) });
我也有类似的问题,不确定是否相关。我在为cms做c#mvc

所以我从用户那里得到了一些html输入,并使用
“@html.Raw(Modal.Content)”

在Modal.Content中有一个

,我在使用jquery
.html(“@html.Raw(Modal.Content)”)将该内容添加到html中时遇到了问题。

但最终问题并不是


有一个不可见的
\n
所以我做了
.html(@html.Raw(Modal.Content).Replace(“\n”,”)”)
,问题就解决了。

仍保留在我的内容中,并按预期工作。

请再次阅读我的问题,克莱特斯。特别是我说“我把它从
改成
”的那部分,如果上面没有用(你明确地说了“try”;),那就试试


,我也试过了。有趣的是,无论我使用

还是

,在所有情况下,浏览器都会报告它得到了
,并给出错误。我可能应该提到,这实际上是在一个XSL文档中,在服务器端解析(不问)并以html形式发送到客户端。从xml到html的转换可能是罪魁祸首,但将其分为两部分似乎已经解决了这个问题。我很想知道为什么,但现在我很高兴它能起作用。奇怪的是,我今天遇到了一个类似的问题(带有br标签),将它分解成几个小步骤就解决了。我也想知道为什么jQuery不喜欢创建/附加包含换行符的元素。我感觉其他人对doctype角度的看法是正确的。有人知道它为什么会有这种行为吗?
var $div = $('<div class="error"></div>').html('No more foo allowed')
                                         .append('<br />');
$('div.error_container').html($div);
<!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>