如何隐藏元素,然后在点击持有它们的DIV时显示它们

时间:2016-08-23 19:48:47

标签: javascript jquery html animation jquery-animate

如果没有你看到它,这很难解释,所以我建议你看看我发布的JSFiddle。因此,基本上当单击某个div时,它会向下展开以显示一些输入和按钮,但我遇到的问题是,当文档加载输入并且按钮可见时,它们应该仅在它们所在的DIV扩展到透露他们。我已经尝试过尽可能使用.hide()并且无法弄清楚如何修复它。

https://jsfiddle.net/v8u2q8re/

<div>
  <div class='box' id='emailVer'>
    <h2 id='payText'>PAYMENT</h2>
  </div>

  <div class='box' id='accCust'>
    <h2 id='acText'>ACCOUNT CUSTOMIZATION</h2>
  </div>

  <div class='box' id='pay'>
    <h2 id='evText'>EMAIL VERIFICATION</h2>
    <div id='inputArea1' class='inputAreas'>
      <input id='email' class='evInput'>
      <input id='comf' class='evInput'>
      <button id='sndCde' class='evBut'>Send Code</button>
      <button id='comfBut' class='evBut'>Comfirm</button>
    </div>
  </div>
</div>

JS:

var main = function(){
  $('.box').click(function() {
    var el = $(this); 
    if (!el.hasClass('selected')) {
      el.animate({
      "height": "300px"
    }, 200)
      el.addClass("selected");
      $('#inputAreas').show();
    } else {
      el.animate({
      "height": "85px"
    }, 200);
      $('#inputAreas').hide();
      el.removeClass("selected");
    }
  }
)}
$(document).ready(main);

我决定将CSS排除在帖子之外,因为我觉得这对我遇到的问题不重要。

2 个答案:

答案 0 :(得分:3)

添加

.inputAreas {
  display: none;
}

到你的CSS最初隐藏它们。然后改变

$('#inputAreas').show();

el.find('.inputAreas').show();

Example

答案 1 :(得分:1)

要解决此问题,请在.box:

下的CSS中添加溢出

.box { ... overflow:hidden; }

现在任何东西&#34;溢出&#34;您的.box将被隐藏。虽然你可能需要更多地使用css,因为它看起来像你喜欢的方式。祝你好运!

更新: 这是一个小提琴示例:https://jsfiddle.net/doercreator/v8u2q8re/2/