单击切换多个目标

时间:2018-10-08 01:24:47

标签: javascript jquery click toggle slidetoggle

我有两张图片,当您单击一张时,文本(与图片相关)会滑入图片下方的视图中。当前,关闭/切换文本的方法是再次单击图像。

如果在第一张图像上的文本仍然可见的情况下单击第二张图像,它将关闭该文本。然后,我必须再次单击第二张图像以查看其文本内容。

我希望能够单击第二个图像,并且文本内容只是交换,或者关闭第一个图像的文本,然后打开第二个图像的文本(只需单击一次,而不是两次)。

任何输入表示赞赏!

我有一个fiddle here

JS:

    var teamMember = document.getElementsByClassName("team-member");
    var teamRow = document.getElementsByClassName("team-row");
    var bioContainer = $( "<div class='container' id='bio-container'></div>" );

    $(bioContainer).hide();


    $(teamMember).click(function() {

        $(this).toggleClass('member-selected');     

        $('.team-grid').toggleClass('member-active');

        $(bioContainer).html("");

        var thisBio = $(this).find(".team-bio");

        var thisRow = $(this).parent(teamRow);

        $(thisRow).after(bioContainer); 

        var bioHTML = $(thisBio).html();

        $height = $(thisBio).outerHeight(true)

        $(bioContainer).css('height', $height);

        $(bioContainer).slideToggle( "slow", function() {       
            $(this).html(bioHTML);
        });  
    });

HTML:

<section class="team-grid"> 

  <div class="team-row">

      <div class="col-sm-6 team-member">
          <img src="https://www.catster.com/wp-content/uploads/2017/11/A-Siamese-cat.jpg">
          <div class="team-bio">
            <div class="team-bio-inner">
             JOHN'S Bio
            </div>
          </div>
      </div>

      <div class="col-sm-6 team-member">
          <img src="https://r.hswstatic.com/w_907/gif/tesla-cat.jpg">
          <div class="team-bio">
            <div class="team-bio-inner">
               SALLY'S Bio
            </div>
          </div>
      </div>

  </div>

</section>

CSS:

.col-sm-6 {
  width:50%;
  float:left;
}
img {
  width:100%;
  height:200px;
  object-fit:cover;
  cursor:pointer;
}
.close-bio {
  color:pink;
  font-weight:bold;
}
.team-bio {
    visibility: hidden;
    padding: 80px 20%;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
}
#bio-container {
    background: #666;
    width: 100%;
    max-width: none;
    position: relative;
    float: left;
    padding: 25px;
    color:#fff;
    font-size:20px;
}

1 个答案:

答案 0 :(得分:2)

请检查此答案,

Js Fiddle

	var teamMember = document.getElementsByClassName("team-member");
	var teamRow = document.getElementsByClassName("team-row");
	var bioContainer = $( "<div class='container' id='bio-container'></div>" );
  var bioContainerExpanded = false;

	$(bioContainer).hide();
  
			
	$(teamMember).click(function() {
  	if(bioContainerExpanded){
        $(bioContainer).slideToggle( "slow", function() {});
    		bioContainerExpanded = false;
    }

		$('.team-grid').toggleClass('member-active');

		// Resets bioContainer html to blank
		$(bioContainer).html("");

		$(this).toggleClass('member-selected');		
		// Assign 'this' team bio to variable
		var thisBio = $(this).find(".team-bio");

		// Assign 'this' row to variable (find teamRow parent of this teamMember)
		var thisRow = $(this).parent(teamRow);
    
    // Place bio after row
    $(thisRow).after(bioContainer);	
    
		// Assign 'this' bio html to variable
		var bioHTML = $(thisBio).html();

		// Dynamically calculte height of the bio including padding
		$height = $(thisBio).outerHeight(true)

		//assign height to bioContainer before the toggle so that it slides smoothly
		$(bioContainer).css('height', $height);

		// Slide toggle the bioContainer
		$(bioContainer).slideToggle( "slow", function() {		
			// Insert bioHTML into 'this' bioContainer
			$(this).html(bioHTML);
		});
   bioContainerExpanded = true;

	});
.col-sm-6 {
  width:50%;
  float:left;
}
img {
  width:100%;
  height:200px;
  object-fit:cover;
  cursor:pointer;
}
.close-bio {
  color:pink;
  font-weight:bold;
}
.team-bio {
    visibility: hidden;
    padding: 80px 20%;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
}
#bio-container {
    background: #666;
    width: 100%;
    max-width: none;
    position: relative;
    float: left;
    padding: 25px;
    color:#fff;
    font-size:20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="team-grid"> 

  <div class="team-row">

      <div class="col-sm-6 team-member">
          <img src="https://www.catster.com/wp-content/uploads/2017/11/A-Siamese-cat.jpg">
          <div class="team-bio">
            <div class="team-bio-inner">
             JOHN'S Bio
            </div>
          </div>
      </div>

      <div class="col-sm-6 team-member">
          <img src="https://r.hswstatic.com/w_907/gif/tesla-cat.jpg">
          <div class="team-bio">
            <div class="team-bio-inner">
               SALLY'S Bio
            </div>
          </div>
      </div>

  </div>

</section>