2

我正在运行以下代码来查找 ul 中的 li 计数。

     <html>
      <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
        <script>
        $(document).ready(function() {      
           $("ul").each(function(index) {
              alert($(this).find('li').size());         
           });

       });
  </script>
 </head>
 <body>
    <ul/>
    <ul></ul>
    <ul><li>li1</li><li>li2</li></ul>
 </body>
</html>

我收到警报为 2、0、2。为什么我将 li 的计数设为 2?我怎样才能让它为0?

4

3 回答 3

4

您不能像这样<ul/>(至少在 HTML 中)自行关闭 ul 标记,因此它会包装您的其他两个ul元素并li递归地包含每个元素。像第二个一样正确关闭你的 ul 标签,它可以工作。

于 2012-09-20T11:56:21.980 回答
2

那是因为您的第一个 ul 标签包装了其他 ul 标签。现在第一个 ul 标签有 2 个 li 标签属于第三个 ul。您的标记无效,我们将在不同的浏览器中得到不同的结果。

于 2012-09-20T11:56:01.720 回答
2
HTML != XHTML

如果您的标题是<!DOCTYPE html>,请替换

<ul/>

经过

<ul></ul>

只有 SVG 和 MathML 元素可以在适当的 HTML4 或 HTML5(不是 XHTML)文档中自动关闭。

于 2012-09-20T11:56:53.437 回答