You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改toggleDeleteAllBtn函数,确保按钮垃圾桶图标始终显示?

解决按钮文本更新时保留垃圾桶图标的问题

原代码的问题在于使用text()方法更新按钮内容时,会清空按钮内的所有子元素(包括垃圾桶图标<i>),导致图标消失。以下是两种可行的修改方案:

方案一:使用html()方法拼接图标与文本

直接通过html()方法将图标和新文本一起设置为按钮的innerHTML,确保图标始终存在:

function toggledDeleteAllBtn(){
    // 提前获取选中数量,避免重复DOM查询
    const checkedCount = $('.customer_checkbox:checked').length;
    const trashIcon = '<i class="glyphicon glyphicon-trash" id="trash_icon"></i>';
    
    if(checkedCount > 0){
        $('#sel_button').html(`${trashIcon} Delete all selected(${checkedCount})`);
    }else{
        $('#sel_button').html(`${trashIcon} Delete all selected`);
    }
}

方案二:拆分图标与文本节点(更优)

先修改HTML,把按钮内的文本单独放在一个<span>容器中,后续只更新这个<span>的内容,完全不影响图标:

修改后的HTML

<tr id="sid">
    <th>ID</th>
    <th>phone number</th>
    <th>remarks</th>
    <th>date</th>
    <th></th>
    <th><input type="checkbox" name="main-checkbox"></th>
    <th>
        <button class="btn btn-danger btn-sm" id="sel_button" name="sel_button" >
            <i class="glyphicon glyphicon-trash" id="trash_icon"></i>
            <span id="btn_text">Delete all selected</span>
        </button>
    </th>
</tr>

修改后的JavaScript

function toggledDeleteAllBtn(){
    const checkedCount = $('.customer_checkbox:checked').length;
    
    if(checkedCount > 0){
        $('#btn_text').text(`Delete all selected(${checkedCount})`);
    }else{
        $('#btn_text').text('Delete all selected');
    }
}

这种方式的优势是只更新文本节点,不会重复渲染图标元素,性能更优,后期维护也更方便。

内容的提问来源于stack exchange,提问作者Cassey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:32:45