在jquery更新DOM(AJAX请求)之后做一些事情

时间:2011-02-07 09:30:55

标签: jquery ajax livequery

我有一些更新页面内容的livequery处理程序。我想在它们被解雇后才显示内容(以防止用户暂时看到未更改的版本)。内容使用普通的AJAX加载。

到目前为止,我尝试了以下内容:

  1. 通过html获取ajax
  2. 使其不可见(可见性:隐藏)
  3. window.setTimeout(showContent,100) - 将可见性设置为可见
  4. 我认为这可以工作,因为单个选项卡有一个JS线程 - 所以计时器应该在所有其他操作完成后触发。它适用于FF& IE浏览器。但是在Chrome中,有时我仍然会看到一段时间内未更改的内容 - 好像JS被超时线程化或中断了?

    或许有更好的方法来实现我想要做的事情? (没有超时)。

2 个答案:

答案 0 :(得分:1)

  • 您可以使用success回调
  • 或者您可以返回javascript本身并将其添加到dom中。 (您将在其中指定显示机制:))

答案 1 :(得分:0)

事实证明,livequery在内部使用超时运行实时查询,因此这是超时方法排序的问题。

所以我解决了这个问题,直到livequery队列清除(有一些边界,如果用户对他的鼠标疯狂并不断产生事件):

function run_after_livequery(method) {
    var tries = 0;
    function run_if_livequery_done() {
        if (!$.livequery.queue.length || tries >= 20) {
            method();
        } else {
            window.setTimeout(run_if_livequery_done, 50);
            tries++;
        }
    }

    window.setTimeout(run_if_livequery_done, 50);
}