当我用jquery

时间:2018-01-21 13:49:51

标签: javascript jquery html css

我正在努力做到这一点:

当用户同时点击closeBtn和窗口时,叠加效果和弹出窗口消失。

我无法弄清楚为什么到目前为止只有第一部分和叠加层消失,当我走的时候我将尝试使用第二部分,只有叠加层消失。

总共有五个头像div和五个iframe部分。单击头像时,应显示相应的部分和叠加层,当您单击closeBtn或外部时,两者都应该消失。

$(".avatar").click(function() {
  $('.iframe').eq($(this).index()).toggleClass('open');
  $('.overlay').addClass('open');
});

$('.iframe_close').on('click', function() {
  $(this).closest('.iframe').removeClass('open');
  $('.overlay').removeClass('open');
});

var overlay = document.querySelector('.overlay');
var iframeAvatar = document.querySelector('.iframe');

window.addEventListener('click', function() {
  if (event.target === overlay) {
    overlay.className += 'overlay';
    iframeAvatar += 'iframe';
  }
})
.overlay {
  height: 100%;
  width: 100%;
  position: fixed;
  background-color: rgba(0, 0, 0, .4);
  top: 0;
  left: 0;
  opacity: 0;
  display: none;
  z-index: 2;
}

.overlay.open {
  opacity: 1;
  display: block;
  z-index: 2;
}

.avatar {
  width: 100%;
  position: relative;
  margin: 0 auto;
  padding: 0;
  cursor: pointer;
}

.iframe {
  background-color: #FFF;
  border-radius: 10px;
  width: 850px;
  padding: 25px;
  position: fixed;
  top: 50%;
  left: -100%;
  transform: translate(-50%, -50%);
  transition: all .5s ease-in-out;
}

.iframe.open {
  z-index: 2;
  left: 50%;
}

.iframe_avatar {
  position: relative;
  width: 35%;
  float: left;
  margin-right: 25px;
}

.iframe_close {
  float: right;
  cursor: pointer;
  font-size: 2.5em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="overlay"></div>
<div class="avatar">
  <img src="img/mauricio.jpg" alt="">
  <span class="avatar-info"><p><strong>Maurício Munhoz</strong><br/>
    Diretor/Consultor Técnico</p>
  </span>
</div>
<div class="avatar">
  <img src="img/alexandre.jpeg" alt="">
  <span class="avatar-info"><p><strong>Alexandre Lúcio da Silva</strong><br/>
    Consultor Lean Manufacturing</p>
  </span>
</div>
<section class="iframe">
  <div class="iframe_avatar">
    <img src="img/mauricio.jpg" alt="">
  </div>
  <div class="iframe_info">
    <span class="iframe_close">&times;</span>
    <p><strong>Maurício Munhoz</strong><br/> Diretor/Consultor Técnico</p>
    <p>Fundador e Diretor da Munhoz Consultoria, Maurício vem trabalhando como Consultor Técnico desde 2003, liderando projetos de certificação de mais de 20 organizações de diferentes segmentos industriais e de prestação de serviço. Atua desde 2008 como
      Auditor de terceira parte para a maior certificadora mundial de sistemas e produtos: Bureau Veritas Certification. Engenheiro Mecânico com 40 anos de experiência profissional, tendo atuado em todos os processos principais e de apoio: suprimentos,
      produção, engenharia, qualidade, assistência técnica e manutenção.</p>
  </div>
</section>
<section class="iframe">
  <div class="iframe_avatar">
    <img src="img/alexandre.jpeg" alt="">
  </div>
  <div class="iframe_info">
    <span class="iframe_close">&times;</span>
    <p><strong>Alexandre Lúcio da Silva</strong><br/> Consultor Técnico</p>
    <p>Formado em Engenharia Industrial pela Universidade Braz Cubas de Moji das Cruzes - SP. Antes de fundar a Munhoz Consultoria, Maurício atuou como Engenheiro e Supervisor da Qualidade na Valeo Sistemas Automotivos Ltda, com a coordenação de equipes
      de técnicos e engenheiros, planejamento de atividades, tratamento de não conformidades, planejamento e gerenciamento de custos e investimentos da área da qualidade, negociação em compras e aprovação de projetos. </p>
  </div>
</section>

1 个答案:

答案 0 :(得分:0)

我认为如果你调整你的js代码就像下面这应该工作:

$(".avatar").click(function() {
    $('.iframe').eq($(".avatar").index($(this))).toggleClass('open');
    $('.overlay').addClass('open');
});

$('.iframe_close').on('click', function() {
    $(this).closest('.iframe').removeClass('open');
    $('.overlay').removeClass('open');
});

$('.overlay').on('click', function() {
    $('.iframe').removeClass('open');
    $('.overlay').removeClass('open');
});

不需要关注部分:

/*var overlay = document.querySelector('.overlay');
 var iframeAvatar = document.querySelector('.iframe');

 window.addEventListener('click', function() {
  if (event.target === overlay) {
   overlay.className += 'overlay';
   iframeAvatar += 'iframe';
  }
 })*/