【问题标题】:jQuery doesn't work without alertjQuery 在没有警报的情况下无法工作
【发布时间】:2012-12-21 16:03:27
【问题描述】:

我在下面有一些 JavaScript,但除非我有如下所示的 alert,否则它不起作用。我知道这是某种时间问题,但我不知道如何解决它。有什么想法吗?

$(function() {
    $("#search_field").tokenInput("/searches/suggest_gems.json", {
    onAdd: function (item) {
    $('#search_field').val(item.name);
    // Doesn't work without alert("hi");
    },
    crossDomain: false,
    tokenLimit: 1,
    tokenValue: name
    });
});

【问题讨论】:

  • 这是什么意思? “没有警报就无法工作”?这应该做什么?你有什么错误?我们到底在修复什么?
  • 您可能想使用setInterval() 设置间隔或使用setTimeout()(在Google 上查找,他们可能会帮助您)!
  • 是的,只是 alert() 暂停了足够长的时间,让其他东西在幕后赶上。

标签: jquery


【解决方案1】:

我之前也遇到过类似的问题。我发现工作是使用$(window).load(function(){...}) 而不是$(function(){...})。这会赢得足够的时间,让在 DOM 加载时尚未准备好的任何内容在窗口完全加载时准备好。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    尝试检查控制台是否有错误。在 Chrome 中,您可以使控制台持久化:https://stackoverflow.com/a/7661797/1446608

    听起来像是一个异步问题。当您使用alert 时,代码执行会停止,并且不会显示错误。如果您没有使用警报,则错误会停止代码执行,因此永远不会触发 onAdd,因此不会执行该代码。

    首先,尝试在 onAdd 被触发时检查元素 #search_field 是否仍然存在于 DOM 中。

    还要检查那个项目。name 不是未定义的。

    检查在 onAdd 被触发之前发生了什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 2012-04-01
      相关资源
      最近更新 更多