2012-02-24 107 views
0

我有一個問題,在我的頁面中,我有一個div包含讓我們說兩個隱藏的字段值爲0和2.我有一個按鈕,觸發ajax查詢和更改具有相同隱藏字段但分別具有值1和2的div內容。問題是,它似乎像我的JavaScript(使用JQuery)沒有意識到這些變化。當我檢查我的頁面查看HTML源代碼,我看到的值發生了變化,但在劇本的時候我在做:JQuery Ajax沒有更新DOM(我認爲)

$("#btn").click(function() { 
    alert($("#hidden1").val()); 
    alert($("#hidden2").val()); 
}); 

它仍然顯示我的舊值(0和2)一樣,如果在DOM尚未更新。請有人幫助我,或告訴我,如果是正常的,以及如何解決它。

感謝您的時間 我!

+0

您可以添加更改字段的代碼 – ggreiner 2012-02-24 17:03:59

+0

更改代碼的位置在哪裏? – James 2012-02-24 17:04:09

+0

你在哪裏改變hidden1和hidden2的值? – 2012-02-24 17:05:04

回答

1

試試這個:

$("#btn").on('click', function() { 
    alert($("#hidden1").val()); 
    alert($("#hidden2").val()); 
}); 
+0

'.live()'與DOM沒有更新有什麼關係?.live()'確保事件監聽器綁定到選擇器,而不是當前存在的與選擇器匹配的元素。 – kontur 2012-02-24 17:06:54

+0

沒有'.live()'也被棄用。?? – 2012-02-24 17:07:41

+0

是的,它已被棄用。舊的習慣很難死掉,它被'on()'替代了。 – 2012-02-24 17:12:02

0

這並不是說DOM沒有被更新,可能是因爲你的jQuery事件在時間。點擊綁定到特定元素()被調用。由於DOM已更改(您可能已刪除並添加了同一個ID的新元素),該函數將返回您丟棄的元素的值(因爲即使從DOM中刪除,它仍保持綁定狀態)。

使用live()方法或on()替代click()處理程序。 jQuery提供的這個方法在被調用的時候不會綁定到一個特定的DOM元素,而是每次檢測到點擊都進行動態查找。

+0

實際上這兩個是不相關的。事件與按鈕點擊無關,並且點擊是在更改完成後手動完成的..所以爲什麼它不會被更新? – maniak 2012-02-24 17:12:20

+0

我確實嘗試過,但它不起作用 – maniak 2012-02-24 17:17:48

+0

因此,您的按鈕不會被替換? – Kekoa 2012-02-24 17:18:20