【问题标题】:.html() on a div that deletes itself.html() 在删除自身的 div 上
【发布时间】:2013-02-08 16:10:28
【问题描述】:

我在 div 上调用 .html() 函数时遇到问题。我有一个 jQuery 对话框,其中包含一个带有选择选项输入的 div。在选择选项输入的更改事件中,对 java servlet 进行 ajax 调用,该 servlet 生成新代码,并使用 .html() 将其放入 div 中。这是我的ajax调用的“成功”功能:

success: function (data, textStatus, xhr) {
    if (data.length > 0) {
        alert($('#myDivId').html());
        $('#myDivId').empty().html(data);
        alert($('#myDivId').html());
    }
}

这是有趣的部分!我第一次更改选择值时,效果很好。当我再次尝试时,ajax 调用按预期工作,但屏幕上的内容(chrome 和 IE)并不能反映 html() 函数返回的内容。在它第一次调用后,警报显示,说:

<b>Hello</b>

在 html() 调用之前,然后在它说:

<b>World</b>

但 chrome 和 IE 上的 Div 仍然显示 Hello

有什么线索吗?

【问题讨论】:

  • 你不需要.empty()
  • 在警报上按 OK,然后它应该更新为 World。这是阻止代码执行的操作的症状,例如警报、确认、提示和同步 ajax 请求。
  • 您确定$('#myDivId') 是您正在查看的内容吗?
  • @mikakun 如果我没记错的话,在某些浏览器中某些时候存在与 $#html()-without-$#empty() 相关的内存泄漏。 #bettersafethansorry
  • @Flo 不知道;你能指出任何描述这个的文章吗?

标签: jquery html ajax google-chrome


【解决方案1】:

我终于在这里找到了问题。 div pb-div 是动态创建的。在我的应用程序的特定情况下,该 div 会从页面中删除。当使用相同的脚本重新创建它时,看起来浏览器仍然在另一个 div 上具有句柄或类似的东西。我只是在 DIV 名称中添加了时间戳以始终具有唯一的 ID,并且它起作用了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2013-11-26
    • 2015-01-23
    相关资源
    最近更新 更多