javascript
  • jquery
  • html
  • dom
  • 2012-06-19 68 views 0 likes 
    0

    我發現jQuery並不總是從HTML字符串創建正確的DOM。這裏是一個小例子代碼:jQuery從HTML字符串生成不正確的DOM

    var x = "<div><p><ul><li>1</li></ul></p></div>"; 
    console.log('x = ' + x); 
    console.log('jQuery(x) = ' + jQuery(x).html()); 
    var y = "<div><div><ul><li>1</li></ul></div></div>"; 
    console.log('y = ' + y); 
    console.log('jQuery(y) = ' + jQuery(y).html()); 
    

    這裏是我得到的jQuery 1.7.1運行這個輸出:

    x = <div><p><ul><li>1</li></ul></p></div> 
    jQuery(x) = <p></p><ul><li>1</li></ul><p></p> 
    y = <div><div><ul><li>1</li></ul></div></div> 
    jQuery(y) = <div><ul><li>1</li></ul></div> 
    

    正如你所看到的,第二個示例創建正確的DOM,第一例子沒有。唯一的區別是<p>標籤,而不是<div>。這是jQuery的錯誤或功能?

    +0

    您在指定無效的html。這是輸入不正確,不是輸出。您在結果中看到的html是自動更正的html。 – Nope

    +0

    @downvoter:真的嗎?這是一個很好的問題。 Upvoting抵消。 –

    回答

    8

    這就是可能是瀏覽器細微差異,since <ul> elements are illegal in <p> elements

    可能發生的情況是,當jQuery嘗試在字符串中創建HTML元素時,瀏覽器會「自動糾正」隨jQuery產生的HTML。

    +0

    Yepper,這是最有可能的。 –

    +0

    多數民衆贊成它,直接嘗試; 'document.body.innerHTML = x; alert(document.body.innerHTML)' –

    相關問題