繁体   English   中英

我如何隐藏html,直到用javascript处理过?

[英]How do i hide html until its processed with javascript?

我正在使用一些JS代码将菜单转换为向下钻取菜单

问题是在运行JS之前,您会看到很大的链接混乱。 在他们的网站上,通过将js放在顶部来解决了问题。 使用yahoo / YSlow的建议,我将JS文件放在底部。

我试图用display隐藏菜单:无,然后使用jquery来显示.show()、. css('display','')、. css('display','block'),它们都导致混乱菜单(我得到标题,但没有标题背景色或菜单的任何链接)

如何正确渲染div /菜单并在渲染后显示它?

<head>放置:

<script>document.documentElement.className = 'js';</script>

现在,它将.js类添加到您的html元素中。 这将是页面上的javascript完成的第一件事。

在您的CSS中,您可以编写:

.js #menu {display:none; }

接着:

$(document).ready(function() { 
    $('#menu').css('display','block').fancyMenu();
});

这是一项出色的技术,如果您的用户禁用了JavaScript,则可以使您的页面“逐步增强” –她仍然可以看到内容,并且还可以将非JS样式与样式分开,这是相关的仅适用于菜单的JS版本,也许是“ position:absolute”之类的东西。

在页面顶部放置:

<script type="text/javascript">
    document.write('<style type="text/css">');
    document.write('#mylinks { display:none; }');
    document.write('</style>');
</script>

在“处理”结束时,调用$('#mylinks').show();

在处理DOM时评估document.write ,这意味着在页面首次显示在视口之前,将在样式规则中注册此动态样式块。

这是一个很好的例子, 渐进增强确实可以很好地工作-如果您的用户具有可用的JS,并且已启用JS,则可以隐藏链接,直到它们准备就绪为止。 但如果不是,尽管难看,它们仍然可用。

如果您不使用JavaScript而不制作看起来像“一团糟”的网页,生活将会变得更加愉快。 放心

无论yahoo怎么说,对于您来说,在正文渲染之前,插入一个小脚本在ypur文档的头上添加一个带有一些规则的样式元素的脚本,可能都是值得的。

我找到了解决方案。 我应该让链接用css隐藏,然后在执行ddMenu代码之前而不是after之后显示.show()。 ddMenu似乎在检查父级宽度,因为它隐藏了,所以我猜它为0。.show()和ddMenu之间的时间足够快,无法显示丑陋的链接(在我的机器/浏览器上)。 大多数情况下(页面加载,JS文件的http req,JS编译/执行等)链接都是隐藏的,因此看起来不错。

$(function () {
    $('.menuT1').show(); //do it before not after in this case.
    $('.menuT1 > ul').ddMenu({

好吧,如果您熟悉jQuery,那么我会做这样的事情

$("#mybuttom").click(function() {
           $("#mydiv").hide(); //hide the div at the start of process
           $.post( "mypostpage.php", 
                   { testvar: testdata },
                   function(data) {
                         //callback function after successful post
                         $('#mydiv').show(); //show it again
                   }
           );
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM