jQuery同时更改文本和toggleClass

时间:2019-07-02 15:42:39

标签: jquery html css

在click事件上,我想更改文本并同时切换2个不同的类。我已经在下面设置了我的代码,但是它只执行一个而不执行另一个

$(document).ready(function() {

  $('.more-benefits-btn').click(function() {


    $(this).text($(this).text() == 'Show Less' ? 'Show More Benefits' : 'Show Less');
    $("i", this).toggleClass('fal fa-chevron-down fal fa-chevron-up');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<span class="more-benefits-btn">Show More Benefits&nbsp;<i class="fal fa-chevron-down"></i></span>

2 个答案:

答案 0 :(得分:2)

可能是因为它更改了按钮的全部内容

$(document).ready(function () {

$('.more-benefits-btn').click(function () {
  var $this = $(this).find('span'); 
    $this.text($this.text() == 'Show Less' ? 'Show More Benefits' : 'Show Less');
    $(this).find('i').toggleClass('rotate');
});
});
i{
display: inline-block;
transition:all ease .5s;
}
i.rotate{
transform:rotate(180deg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" class="more-benefits-btn"> <span> Show More Benefits </span><i>V</i></button>

答案 1 :(得分:2)

<i>类未切换的原因是,当您使用文本方法时,<i>元素已被删除。

使用此代码

  $('.more-benefits-btn').click(function() {
  var i = $("i", this);
  $(this).text($(this).text() == 'Show Less' ? 'Show More Benefits' : 'Show Less');
  i.toggleClass('fa-chevron-down fa-chevron-up');
  $(this).append(i);
  });