我在Jquery中看到一些意外的行爲。看來jquery正在將"
轉換爲文字雙引號,這與我正在處理的單個頁面應用程序中的表單驗證混亂。內容是通過jquery設置的,在這一點上,包含"
的表單字段被轉換爲"
,這打破了表單。jquery將"轉換爲文字引用
作爲一個測試,我嘗試了常規的JS DOM操作並得到了不同的結果。這似乎與Jquery的1.x和2.x版本保持一致。
這裏是我試過的代碼:
// Regular Javascript
var e = document.createElement('div');
var textNode=document.createTextNode('&');
e.appendChild(textNode)
console.log(e.childNodes) //=> ['&']
var e = document.createElement('div');
var textNode=document.createTextNode('"');
e.appendChild(textNode)
console.log(e.childNodes) //=> ['"']
// vs. Jquery
e = $('<div>')
content = '&'
e.html(content)
console.log(e.html()) //=> &
e = $('<div>')
content = '"'
e.html(content)
console.log(e.html()) // => " (a quote)
有什麼想法?
編輯 jquery doc說.html()是基於瀏覽器的innerHTML實現。然而,使用上面的純JS代碼: console.log(e.innerHTML)yeilds:& amp;和&「分別。
另外,主叫的innerHTML存儲在jquery的yeilds實際DOM: 的console.log(e.get(0).innerHTML)&和「分別
e = $('<div />');
content = '"'
e.html(content)
console.log(e.get(0).innerHTML) // => "
console.log(e.html()) // => "
console.log(e.text()) // => "
e = $('<div />');
content = '&'
e.html(content)
console.log(e.get(0).innerHTML) //=> &
console.log(e.html()) //=> &
console.log(e.text()) //=> &
你不應該使用jQuery爲此[香草JS(HTTP:// –