【问题标题】:Jquery not updating text in elements more than onceJquery不会多次更新元素中的文本
【发布时间】:2014-04-17 12:21:00
【问题描述】:

所以我有一个具有 onblur/onkeyup/onclick 触发器的文本字段。这很好用。

它获取值并将其添加到<b id="search_term"></b> 中。这有效,但只是第一次在视觉上。但是,inspector 显示它每次都在更新。

要更新的元素位于固定位置,如果搜索输入不为空,我使用 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 的东西?

【问题讨论】:

    标签: javascript jquery dynamic input getelementbyid


    【解决方案1】:

    通常的原因是您已将事件绑定到已删除/重新添加的元素,因此该事件消失了。

    更改 text 本身应该能够无限期地进行,根据此示例:

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

    JS:

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

    点击此处的 GO 文本查看运行情况:http://jsfiddle.net/5BXqg/

    【讨论】:

    • 你是对的,它确实在那里工作。我已将其缩小为 slideDown() 和 slideUp() 的问题。如果我删除它们并仅使用 .show(),则元素会正常更新。有什么想法吗?
    • 不——这很奇怪,因为slideUp 只影响heightdisplay 样式。它不应该影响您的活动。你能在jsfiddle.net 上贴一个有效的问题示例吗?
    【解决方案2】:

    答案最终是我在 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 个小时的时间。哈哈

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多