簡體   English   中英

jQuery不會多次更新元素中的文本

[英]Jquery not updating text in elements more than once

所以我有一個文本字段,其中包含onblur / onkeyup / onclick觸發器。 這很好。

它獲取值並將其添加到<b id="search_term"></b> 這是有效的,但僅在視覺上是第一次。 但是,檢查器顯示它每次都在更新。

要更新的元素處於固定位置,我使用JQuery $( "#search_results" ).slideDown( "slow", function() {}); 如果搜索輸入不為空,則顯示容器元素。

如果單擊關閉按鈕觸發slideUp()函數,則可以在slideUp()消失之前在元素中看到更新的文本。

有人遇到過這種現象嗎? 搜索沒有產生任何類似結果。

我試過了

$("#search_term").text(string);
$("#search_term").html(string);
document.getElementById("search_term").innerHTML=string;

它們均未使用實際變量更新。

我還測試了使用JQuery從文本框中檢索值。 如果在運行一次函數后更改文本框的值,則獲取更新值的唯一可能方法是通過$('#test_box').attr("value"); .text().html()仍顯示第一個值。

這是JQuery中的錯誤還是我做錯了什么?

一直試圖解決幾個小時。 感謝您的任何建議。

編輯:將其縮小為slideDown()slideUp() 如果刪除它們並僅使用.show() ,則該元素會正常更新。 有沒有辦法強制元素重新渲染? 還是應該尋找slideDown / Up的替代品?

通常的原因是您已將事件綁定到已被刪除/重新添加的元素,因此該事件消失了。

如以下示例所示,更改text本身應該可以無限期地繼續進行:

<div id="example"></div>
<div id="test">Go</div>

JS:

$('#test').click(function() {
   $('#example').text(Date.now); 
});

通過單擊任意多的GO文本可查看其運行情況: http : //jsfiddle.net/5BXqg/

答案最終就是我在slideDown()內部所做的slideDown()

我在做:

$("#seach_container").slideDown("slow", function() {
    document.getElementById("body").style.position="fixed"; // to prevent bg scrolling
    document.getElementById("body").style.overflowY="scroll"; // to prevent doc jumping
    // Applying these two lines multiple times was giving me the issue of text not updating.
});

我最終設置了一個布爾值,以確保只將位置更改為固定一次。 立即修復。

因此,這是非常具體的情況,但也許此解決方案可以為其他人節省6個小時的時間,而這筆費用是我的。 哈哈

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM