javascript - 仅对单击的按钮的 div 进行动画处理

标签 javascript jquery

如果段落延伸特定高度,并且通过单击高度更改为完整的按钮,我想隐藏 div 的文本,但通过单击该按钮,所有 div 都会受到影响,我只想为该按钮的父 div 制作动画,而不仅仅是行在这种情况下,只有第一个延伸该高度的 div 受到按钮单击的影响

$(document).ready(function() {
var text = $('.description'),
     btn = $('.btn-overflow'),
       h = text[0].scrollHeight; 

if(h > 120) {
	btn.addClass('less');
	btn.css('display', 'block');
}

	$(".emp-bio .btn-overflow").click(function(e) {

  e.stopPropagation();
	e.preventDefault();
  if ($(this).hasClass('less')) {
      $(this).removeClass('less');
      $(this).addClass('more');
      $(this).text('Show less');

      text.animate({'height': h});
  } else {
      $(this).addClass('less');
      $(this).removeClass('more');
      $(this).text('Show more');
      text.animate({'height': '120px'});
  }  
});


});
.description {
  width: 250px;
  height: 120px;
  display: block;
  overflow: hidden;
  word-break: break-word;
  word-wrap: break-word;
}
<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<div class="emp-bio">
<div class="description">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<a class="btn-overflow" href="#">Show more</a>
</div>
<div class="emp-bio">
<div class="text-overflow">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>

<a class="btn-overflow" href="#">Show more</a>
</div>
<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>

最佳答案

希望我的代码片段能够以某种方式帮助您。

祝你有美好的一天,

$(document).ready(function() {
var text = $('.description'),
     btn = $('.btn-overflow'),
       h = text[0].scrollHeight; 

if(h > 120) {
	btn.addClass('less');
	btn.css('display', 'block');
}

	$(".emp-bio .btn-overflow").click(function(e) {

  e.stopPropagation();
	e.preventDefault();
  if ($(this).hasClass('less')) {
      $(this).removeClass('less');
      $(this).addClass('more');
      $(this).text('Show less');

      //use siblings to access .description in same level.
      $(this).siblings( ".description" ).animate({'height': h});
  } else {
      $(this).addClass('less');
      $(this).removeClass('more');
      $(this).text('Show more');

      //use siblings to access .description in same level.
      $(this).siblings( ".description" ).animate({'height': '120px'});
  }  
});


});
.description {
  width: 250px;
  height: 120px;
  display: block;
  overflow: hidden;
  word-break: break-word;
  word-wrap: break-word;
}
<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<div class="emp-bio">
<div class="description">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<a class="btn-overflow" href="#">Show more</a>
</div>
<div class="emp-bio">
<div class="description">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>

<a class="btn-overflow" href="#">Show more</a>
</div>
<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>

关于javascript - 仅对单击的按钮的 div 进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697085/

相关文章:

javascript - 如何使用 firebase 数据填充 Accordion ?

javascript - 与 prevState 比较的 componentDidUpdate 正在替代触发器上工作

javascript - 如何正确改变状态? (只读错误)

javascript - jquery ajax 数据对象 : functions are called

javascript - 如何将下一个上一个按钮添加到弹出窗口?

Javascript:按每个内部数组中的第二个元素对数组数组进行排序

javascript - 如何修复 Bootstrap 中的轮播框?

javascript - 为什么要将 "this"分配给 jQuery 中的变量?

javascript - 从 javascript 调用 URL 处理程序

JQUERY UI Accordion 开始折叠