本質上,我有一些代碼需要在其輸入元素的任何輸入元素模糊時獲取父元素的HTML。這很簡單。問題是在父元素上調用html()
時返回的HTML不反映其中包含的輸入元素的當前值。也就是說,在Firefox或Chrome中。它適用於所有地方的IE。當輸入值發生變化時,html()方法錯誤
這裏的的jsfiddle:http://jsfiddle.net/8PJMx/15/
嘗試在文本框中「每個人」,然後點擊按鈕改變「世界」。請注意,我還附加$.now()
,以便您可以看到代碼實際上正在執行。
正如你所看到的,$("#parent").html()
不會更新,即使$("#child").val()
這樣做。 爲了您的觀賞樂趣,這裏的HTML:
<div id="parent">Hello <input type='text' id="child" value='world' /></div>
<button id="separateEvent">Get HTML.</button>
<br>
<p>The HTML for #parent is:</p>
<textarea id="parentsHtml" style="width:95%; height: 100px;"></textarea>
<p>The value of #child is:</p>
<textarea id="childsValue" style="width:95%; height: 100px;"></textarea>
...這是JavaScript的:
$("#separateEvent").click(function()
{
$("#parentsHtml").val($("#parent").html() + "\r\[email protected]" + $.now());
$("#childsValue").val($("#child").val() + "\r\[email protected]" + $.now());
});
更改屬性不會更改HTML源。無論如何,你試圖完成什麼? – dqhendricks 2012-08-07 20:35:17
我認爲值得指出的是,如果您在瀏覽器工具中檢查元素,也會發生同樣的情況。 Chrome工具仍在HTML_中報告「世界」值,即使值本身已更改。 – Mathletics 2012-08-07 20:35:44
根據我的經驗,通過'.html()操縱DOM很少是做事的最佳方式。 – Blazemonger 2012-08-07 20:39:16