繁体   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