所以我有一个有onblur / onkeyup / onclick触发器的文本字段。这很好。
获取该值并将其添加到<b id="search_term"></b>
中。这是有效的,但只是第一次在视觉上。但是,检查员每次都会更新它。
正在更新的元素处于固定位置,如果搜索输入不为空,我使用JQuery $( "#search_results" ).slideDown( "slow", function() {});
来显示容器元素。
如果我单击关闭按钮以触发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的替代品吗?
答案 0 :(得分:0)
通常的原因是您已将事件绑定到已删除/重新添加的元素,因此事件已消失。
根据此示例,更改text
本身应该可以无限期地继续:
<div id="example"></div>
<div id="test">Go</div>
JS:
$('#test').click(function() {
$('#example').text(Date.now);
});
通过点击此处的GO文字来查看正在运行的内容:http://jsfiddle.net/5BXqg/
答案 1 :(得分:0)
答案最终成为我在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个小时的费用。哈