6

从服务器获取新记录后,我使用 jQuery 1.7.2 中的 AJAX 成功回调将新记录添加到列表并淡入。

function onSuccess (data, status, xhr) {
    var record = $(template_html);

    // populate `record` with `data` values.

    body.append(record); // body is a jQuery object from closure scope
    record.fadeIn('fast');
}

我在以下浏览器中对此进行了测试:

  • 即 8
  • 即 9
  • Safari 5.1.7
  • 火狐 14.0.1
  • 铬 21.0.1180.79
  • 歌剧 11.64

它在上述所有浏览器中始终如一地工作,除了 Chrome。它偶尔在 Chrome 中工作。

当它在 Chrome 中失败时,如果我单击“检查元素”或查看开发人员工具上的元素选项卡,或者单击使用 打印到 Javascript 控制台的 DOM 元素console.log(record),它会导致新记录弹出可见性。

我知道 DOM 元素正在正确创建、填充和附加。问题是有时 Chrome 拒绝重新渲染 DOM。有时。

我尝试过更换fadeInshowfadeTo更换。

“类似问题”中的答案都没有对我有用。记录的标记只是<div>s in <div>s,我在添加新记录之前和之后验证了页面,以查看是否存在无效的 HTML 问题。

有什么想法或想法吗?

4

1 回答 1

1

尝试这个:

$(document).ready(function () {
    var body = document.body;
    $(body).append(function () {
        return $('<div>').addClass('Appended').html('Test Div </br> :)');
    });

    setTimeout(function () {
        $('.Appended').fadeIn('fast');

        // i'm used timeout to see the effect
    }, 1500);
});

你可以通过这个小提琴链接检查它

于 2013-10-22T14:05:48.760 回答