javascript - 如何以最佳性能添加新的隐藏 HTML?

标签 javascript jquery

我有一大块 HTML 需要替换,其中包括 fadeOut/fadeIn 过渡。我不知道如何将 HTML 添加到页面(隐藏)而不将其包装在 div 中。

$.get('/ajax', function(newHtml){
    var $newEvent = $('<div class="new-event" />').hide().html(newHtml);
    $('#content .event').fadeOut('slow', function(){
        $(this).remove(); //old event
        $newEvent.appendTo('#content').fadeIn('slow').removeClass('new-event'); //then remove the wrapper div that I didnt need in the first place
    });
});

在利用最佳实践提高性能的同时,实现这一目标的最佳方法是什么?

解决方案:

出于某种原因,我认为创建像这样的新元素:$(newHtml)html(newHtml) 效率低(性能差)。但显然,就性能而言,它们是相同的(除了我自己的观察之外,我没有数据支持这一点)。

因此下面的代码与前面的代码一样高效:

$.get('/ajax', function(newHtml){
    var $newEvent = $(newHtml).hide();
    $('#content .event').fadeOut('slow', function(){
        $(this).remove(); //old event
        $newEvent.appendTo('#content').fadeIn('slow');
    });
});

最佳答案

将代码添加到页面时,将顶级元素全部隐藏

<div style="display:none;">...</div>

fadeIn 被调用时,jQuery 会自动为您删除它。

如果你无法修改返回的html,那么就这样做,

$(newHtml).hide().appendTo('#content');

这会在添加到 DOM 之前隐藏它。

关于javascript - 如何以最佳性能添加新的隐藏 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421129/

相关文章:

javascript - 选择一个与数组值 jquery 匹配的选项文本

javascript - 如何更改名称,而不是动态填充的选择列表的值?

javascript - 将分页添加到我的轮播 (jQuery)

javascript - 使用主 js 中定义的变量在两个 vue 文件之间共享数据

javascript - 某些移动浏览器上的网站巨大

jquery - 如果已经在页面上,则使 requireJs 不重新加载 jQuery

javascript - 如何使用 jquery 查找并选择所有具有数据属性并以特定单词开头的元素?

javascript - 如何在 React (JSX) 中清除/重置状态内的数组

javascript - 在分组表中显示数组

javascript - 从隐藏的复选框中获取值(value)