Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery:自动关闭div_Jquery_Html_Dom - Fatal编程技术网

JQuery:自动关闭div

JQuery:自动关闭div,jquery,html,dom,Jquery,Html,Dom,我正在针对一个遗留系统工作,该系统在div不包含任何内容时生成自动关闭div 我想使用jQuery获取某个div的内部html,但是如果div是自动关闭的,jQuery总是获取错误的html 请参阅下面的演示代码: <!doctype html> <html> <head> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script

我正在针对一个遗留系统工作,该系统在div不包含任何内容时生成自动关闭div

我想使用jQuery获取某个div的内部html,但是如果div是自动关闭的,jQuery总是获取错误的html

请参阅下面的演示代码:

<!doctype html>
<html>
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script type="application/javascript">
        $(function () {
            var s = $('.b').html();
            alert(s);
        });
    </script>
</head>
<body>
    <div class="a"></div>
    <div class="b" />
    <div class="c">This is c</div>
</html>

$(函数(){
var s=$('.b').html();
警报;
});
这是c
当我运行此代码时,我得到以下结果:


请帮助我,任何建议都将不胜感激。

我怀疑这是不可能的,因为以斜杠结尾的元素与不以斜杠结尾的元素是等效的

jQuery在浏览器生成的DOM上运行,浏览器将元素视为打开的,请参见:

var s=$('.b').parent().html();//这是c

doctype是什么?如果它不是XHTML doctype,您能强迫它使用它吗?@tvanfosson:有没有办法更改doctype,使其与提供文档的标准(XHTML)相匹配?如果您将doctype设置为与文档结构匹配的类型,我认为浏览器将遵循doctype。这是JQuery的错误吗?或者我们如何才能将DOM
视为一个空白的DOM?@jesse不,这不是jQuery的错,也不是浏览器的错,这是这个遗留系统的程序员的错。我认为这个问题也不容易回避。好的,谢谢你的回答,我明白了,这是否意味着我们应该在必要时创建一个像
这样的空白DOM,而不是
。只有显式关闭在HTML5(或除XHTML以外的所有内容)中有效,除非元素是自关闭的(或W3C称之为空的)@TimWolla:Lucky传统系统的HTML具有固定格式,第二个div很少包含像第三个div那样的div。因此我用这种方式解决了我的问题:var s=$('.b').HTML().trim();如果(s.indexOf(“”)==0{s=“”;}
var s = $('.b').parent().html(); // <div class="a"></div><div class="b"><div class="c">This is c</div></div>