Я действительно удивлен, что раньше не сталкивался с этой проблемой, но кажется, что вызов функции jQueries.html() для элемента игнорирует изменения в DOM, то есть возвращает HTML в исходном источнике. IE не делает этого. jQueries.html() просто использует свойство innerHTML внутри.
Это должно произойти? Я на Firefox 3.5.2. У меня есть образец ниже, где независимо от того, что вы меняете значение текстового поля, innerHTML элемента "container" только когда-либо возвращает значение, определенное в разметке HTML. Образец не использует jQuery только для упрощения (результат тот же, что и при использовании jQuery).
Есть ли у кого-нибудь работа, где я могу получить html контейнера в его текущем состоянии, то есть включая любые сценарии изменений в DOM?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<script type="text/javascript">
<!--
function BodyLoad(){
document.getElementById("textbox").value = "initial UPDATE";
DisplayTextBoxValue();
}
function DisplayTextBoxValue(){
alert(document.getElementById("container").innerHTML);
return false;
}
//-->
</script>
</head>
<body onload="BodyLoad();">
<div id="container">
<input type="text" id="textbox" value="initial" />
</div>
<input type="button" id="button" value="Test me" onclick="return DisplayTextBoxValue();" />
</body>
</html>