【问题标题】:Hide div class on page load在页面加载时隐藏 div 类
【发布时间】:2015-03-06 14:14:46
【问题描述】:

您好,我有一个可见的注册表单,我试图在页面加载时隐藏它。所以我所做的是将整个表单放在一个名为“signup”的 div 类中,然后用脚本代码将其隐藏。

更新: html

<script>
  document.write('<div class="js">');
  </script>

<span class="button">Sign In</span>
<div id="signup">
<div class="modal-bg">
<div id="modal">
    <span>Sign In<a href="#close" id="close">&#215;</a></span>
    <form>
        <input id="username" name="username" type="textbox" placeholder="Username" required>
        <input id="password" name="password" type="password" placeholder="Password" required>
        <a id="forgot-link" href="#">Forgot password?</a>
        <button name="submit" id="submit" type="submit">Sign in</button>
    </form>
</div>
</div>
</div>
<script>
  document.write('</div>');
  </script>

我的JS代码(没有隐藏功能):

$('.button').click(function(){
          $('#modal').css('display','block');
          $('.modal-bg').fadeIn();
    });

        $('#close,.modal-bg').click(function(){
              $('.modal-bg').fadeOut();     
              $('#modal').fadeOut();
          return false;
        });

即使隐藏/显示似乎有效,如果我单击它,表单也会隐藏。这是一个问题,因为如果无法键入/单击表单,则没有人可以注册。 (问题已修复)

这里是codepen(现场版):http://codepen.io/mariomez/pen/WbgrNK

【问题讨论】:

  • 如果您想在加载时执行此操作,为什么不使用 CSS 执行此操作? .signup { 显示:无; }
  • @LShetty,不这样做的一个原因是如果你禁用了 js,表单将永远不会显示
  • Js 已启用,就好像我删除了任何隐藏代码然后表单出现在页面加载时,如果我点击关闭按钮它会关闭
  • @Pete 当然,我没想到 :)
  • .signup { 显示:无; } - 在问这里之前我已经这样做了,它也不起作用。

标签: javascript jquery html css hide


【解决方案1】:

您根本不需要注册 div - 我认为这会使事情复杂化。只需启动隐藏的模态背景,因此在您的按钮单击代码之前添加:

$('.modal-bg').css('display','none');       

Example

更新

要在页面加载时停止显示表单,我会添加一个 js div:

在你的正文开始标签之后:

<script>
   document.write('<div class="js">');
</script>

在你的正文结束标签之前:

<script>
   document.write('</div>');
</script>

这允许您应用 js only 样式,在本例中为 modal-bg:

.js .modal-bg {display:none;}

然后您可以删除上面的 js 以隐藏模式,因为它现在将在您的 css 中

updated codepen

【讨论】:

  • 它似乎可以工作我只需要检查 chrome 中的一个小问题,因为当我重新加载页面时,表单在隐藏之前只有几分之一秒可见。
  • 就是这样!! :) 谢谢..这也解决了 chrome 的问题。以防万一,我也会检查其他浏览器。
  • 酷,很高兴我能帮上忙!
  • 对不起,那是我在弄乱你的 jQuery,现在试试更新的 codepen。或者如果你希望能够点击背景关闭模态:codepen.io/anon/pen/NPLNdP
  • LOL :) 好的..... ps:带有“点击背景”功能的较新的codepen是最好的:) ...
【解决方案2】:

你隐藏了“注册”div,但尝试恢复“模态”div

这行得通:

$('.button').click(function(){
      $('#signup').css('display','block');
      $('.modal-bg').fadeIn();
});

    $('#close').click(function(){
          $('.modal-bg').fadeOut();     
          $('#signup').toggle();
      return false;
    });

【讨论】:

  • @Ricky:这是代码工作的小提琴link
【解决方案3】:

您正在寻找一个 id 为“signup”的 div,但那是类名。

$(function() {
  $(".signup").hide();
});

将在页面加载时隐藏注册 div。

然后您可以在按钮单击事件中使用$(".signup").toggle();。

如果你结合这些,例如

$(function() {
  $(".signup").hide();

  $(".button").click(function() {
    $(".signup").toggle();
  });
});

然后按钮正确显示注册块,并在页面加载时隐藏。

【讨论】:

  • 我已经试过了。它确实永久隐藏了 div 类。所以如果我点击按钮,它根本不会显示表单
【解决方案4】:

这是在页面加载时更改 CSS 的 jQuery:

$('.signup').css({
  'display': 'none'
});

【讨论】:

    【解决方案5】:

    第一种方法 (CSS) - CodePen

    #signup {
    
         display: none;
    }
    

    第二种方法(jQuery)-CodePen

    $('#signup').hide();
    

    【讨论】:

      【解决方案6】:

      看起来您已经在您的 codepen 粘贴中找到了答案?该代码与您的帖子不同...

      无论如何,您的登录对话框中有 3 层 div:
      #signup > modal-bg > 模态

      所以如果你想在加载页面后隐藏#signup:

      $(function() {
        $("#signup").hide();
      });
      

      那么您还需要在按钮事件中显示/隐藏#signup。

      .modal-bg 和#modal 是#signup 的子元素,因此如果您保持#signup 处于隐藏状态,那么无论您对它们做什么,.modal-bg 和#modal 都将始终处于隐藏状态。

      顺便说一句,我建议您使用 FireBug 或通用开发工具(在 chrome/IE/FIrefox 中按 F12)来检查 HTML 元素并检查问题所在,至少我是这样在您的代码中发现问题的。

      【讨论】:

      • 是的,我找到了答案,但感谢您的评论。我会将所有这些作为未来类似项目的参考:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多