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: & と " それぞれ。
さらに、jquery yeilds に格納されている実際の dom で innerHTML を呼び出します:それぞれ 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()) //=> &