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/>このように ul タグを(少なくとも HTML では)自己終了することはできないため、他の 2 つのul要素をラップし、それぞれをli再帰的に含んでいます。2 番目のタグのように ul タグを正しく閉じると、機能します。

于 2012-09-20T11:56:21.980 に答える
2

これは、最初の ul タグが他の ul タグをラップしているためです。最初の ul タグには、3 番目の ul に属する 2 つの li タグがあります。マークアップが無効です。ブラウザによって異なる結果が得られます。

于 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 に答える