代码之家  ›  专栏  ›  技术社区  ›  Drew

如何重写此HTML以验证XHTML1.0的严格性?

  •  4
  • Drew  · 技术社区  · 16 年前

    如何重写此HTML以验证XHTML1.0的严格性?

    <div>
        <a href="link.html">
            <p>Some text</p>
            <ul>
                <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
            </ul>
        </a>
    </div>
    

    我的目的是让整个div作为一个可点击的链接。其中的内容只是描述目标页面的内容。W3验证器说我不能有块元素( <p> )跨距标记内( <a>

    4 回复  |  直到 16 年前
        1
  •  3
  •   Robert    16 年前

    不允许将块级元素包装到内联级元素中,因此您有一些替代方法。

    • 您可以将要链接到 <a href="link.html">...</a>

      <div>
          <p><a href="link.html">Some text</a></p>
          <ul>
              <li><a href="link.html">Item 1</a></li>
              <li><a href="link.html">Item 2</a></li>
              <li><a href="link.html">Item 3</a></li>
          </ul>
      </div>​  
      
    • onclick 函数来重现相同的结果。

       //jQuery
       ​$('div').click(function() {
           window.location = 'link.html';
       });​​​​​​
      
       //Non jQuery
       document.getElementById('yourDiv').onclick = function() {
           window.location = 'link.html';
       }
      
      • 如果使用Javascript,请确保使用CSS使内容明显是链接。我推荐伪类

        div {
            text-decoration: underline;
            color: #0000FF;//or whatever your link color is
        }
        div li:hover, p:hover {
            color: #CC00FF;
            cursor: pointer;
        }
        

        2
  •  1
  •   jigfox    16 年前

    不能重新排列它以使块成为链接。您可以做的是使块中的每个元素都成为链接,也可以使用javascript。

    <div style="cursor:pointer" onclick="location.href='link.html'">
      <!-- ... -->
    </div>
    
        3
  •  1
  •   zwol    16 年前

    实际上,您的片段是有效的HTML5。改用它,你的问题就会消失。您所要做的就是将doctype更改为 <!doctype html> .

        4
  •  0
  •   gilly3    16 年前

    <div onclick="location.href = 'link.html'">
        <p>Some text</p>
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
        </ul>
    </div>