首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击父div时jQuery隐藏范围弹出窗口

单击父div时jQuery隐藏范围弹出窗口
EN

Stack Overflow用户
提问于 2018-12-30 00:52:45
回答 3查看 64关注 0票数 1

我有一个包含<span>元素的<div>元素来提供课程。

当用户单击<div>元素时,它将打开相应的子<span>元素。

然后,理想情况下,当用户单击下一个<div>元素时,它将关闭前一个子<span>元素。

我甚至不能打开第一个子<span>元素。

下面是我的代码片段:

代码语言:javascript
复制
$(document).ready(function() {
  var counter = 0;

  $(".popup").click(function() {
    $(this).closest('div').find('span').toggle("show");
  });
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="popup"> English: Human Nature
  <span class="popuptext" id="English9">
        <h1>Human Nature</h1>
			  <br>
	      9th Grade ELA Course Description
	  </span>
</div>
<div class="popup">English: Welcome to NY
  <span class="popuptext" id="EnglishELL">
        <h1>Welcome to NY</h1>
		    <br>
		    9th Grade ELA Course Description for ELLS
	 	</span>
</div>

我做错了什么?我如何才能纠正它?

EN

回答 3

Stack Overflow用户

发布于 2018-12-30 01:38:33

尝试以下代码

代码语言:javascript
复制
$(document).ready(function(){	
    var counter = 0;
   	
    $(".popup").click(function() {
        $(this).toggleClass('active');
        $(this).siblings('.popup').removeClass('active');
    });
});
代码语言:javascript
复制
.popuptext {
  display: none;
}
.popup.active > .popuptext {
  display: block;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="popup"> English: Human Nature
    <span class="popuptext" id="English9">
        <h1>Human Nature</h1>
	      <br>
	      9th Grade ELA Course Description
	  </span>
</div>	
<div class="popup">English: Welcome to NY
    <span class="popuptext" id="EnglishELL">
        <h1>Welcome to NY</h1>
		    <br>
	      9th Grade ELA Course Description for ELLS
	  </span>
</div>

票数 1
EN

Stack Overflow用户

发布于 2018-12-30 01:17:02

here my solution

代码语言:javascript
复制
$(document).ready(function(){   
  $(".popup").click(function() {
    if($(this).find('span').hasClass('active')) {//This can be save in 2 variables {
      $(this).find('span').removeClass('active');
    } else {
        $(this).parent().find('span').removeClass("active");
        $(this).find('span').toggleClass( "active" );
    }
  });
}); 

更新:无循环:)

代码语言:javascript
复制
$(document).ready(function(){   
  var active;
  $(".parent").click(function(e) {
    var target = $(e.target);
    if(!target) return;
    if($(active).hasClass('active')) {
      if(!$(target).find('span').hasClass('active')) {
        active.removeClass('active');
        active = $(target).find('span').addClass('active');
      } else {
          active = $(target).find('span').toggleClass('active')
      }
    } else {
        active = $(target).find('span').addClass('active');
    }
  });
}); 
票数 0
EN

Stack Overflow用户

发布于 2018-12-30 01:47:29

尝尝这个

代码语言:javascript
复制
$(document).ready(function(){ 
      var spans = $('.popup span').hide();
      $(".popup").click(function() {
        var this_span = $(this).find('span'),
        is_visible = this_span.is(":visible");
        spans.hide();
        if (!is_visible) {
            this_span.show();
        }
        });
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53971474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档