javascript - 切换包含内部 HTML 元素的文本
问题描述
单击按钮时,我想将其文本从“查看更多”切换为“查看更少”。但是,span 元素内部包含另一个元素(Font Awesome 图标)。当我切换 span 元素的文本时,其中的元素会消失。您可以在下面的代码段中看到它。
我也试过这个解决方案:
$('.button span').text(($('.button span').text()=='View More<i class="fas fa-angle-down"></i>') ? 'View Less<i class="fas fa-angle-up"></i>' : 'View More<i class="fas fa-angle-down"></i>');
但是它将 i 元素作为跨度文本插入,而不是作为元素插入。
注意:我不能将 i 元素保留在 span 元素之外,因为我在 CSS 中有某些动画。
$('.button').click(function() {
$('.button i').toggleClass('fa-angle-up fa-angle-down');
$('.button span').text(($('.button span').text()=='View More') ? 'View Less' : 'View More');
});
.button {
width: 250px;
padding: 12px 0;
text-transform: uppercase;
cursor: pointer;
}
.button i {
margin-left: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://kit.fontawesome.com/a671c6b423.js" crossorigin="anonymous"></script>
<button type="button" name="button" value="" class="button">
<span>View More<i class="fas fa-angle-down"></i></span>
</button>
解决方案
$('.button').click(function() {
$('.button span').html(($('.button span').text()=='View More') ? 'View Less<i class="fas fa-angle-up">' : 'View More<i class="fas fa-angle-down">');
});
.button {
width: 250px;
padding: 12px 0;
text-transform: uppercase;
cursor: pointer;
}
.button i {
margin-left: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://kit.fontawesome.com/a671c6b423.js" crossorigin="anonymous"></script>
<button type="button" name="button" value="" class="button">
<span>View More<i class="fas fa-angle-down"></i></span>
</button>
推荐阅读
- mysql - 有什么方法可以隐藏我的 MySQL 备份还原代码上的连接字符串?
- sql - 如何通过指定字节数对字符串进行子串化
- css - Header tag appearing on top of another element partially hidden
- java - jvm中如何将native代码转换为机器码
- azure-logic-apps - 逻辑应用 HTTP 上的 HTTP 发布未经授权的错误
- sql - 如何在 BigQuery 中执行动态查询?
- c# - QuickBooks c#保存pdf发票
- reactjs - 在 React-Leaflet 中映射状态
- javascript - 使用 numpy、javascript 和 django
- javascript - 如何将字符串参数从 Angular UI 传递到 node.js 后端?