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

如何仅更新Popover的data-content中的部分内容?

仅更新Bootstrap Popover中data-content的部分文本

可以实现仅修改data-content中的指定文本,核心思路是同时更新原始元素的data-content属性和当前显示的popover DOM内容(如果popover处于显示状态),具体实现如下:

修改后的完整代码

<div class="popover-wrapper">
    <i class="glyphicon glyphicon-question-sign hover_content"
       id="popover_help"
       data-toggle="popover"
       data-placement="right"
       data-content="<p>Some static text
                    <span class='update-text'>Dynamic text to update</span>
                    </p>"
       data-html="true">
    </i>
</div>
<button class="update-popover" onClick="updatePopoverContent()">Click to update</button>
<script>
    function updatePopoverContent() {
        const $popoverTrigger = $('.popover-wrapper .hover_content');
        const newText = '新的动态文本'; // 替换为你需要的目标文本

        // 1. 更新原始data-content属性中的目标文本
        const currentContent = $popoverTrigger.attr('data-content');
        // 用临时DOM容器解析HTML,避免直接字符串替换的格式问题
        const tempContainer = $('<div>').html(currentContent);
        tempContainer.find('.update-text').text(newText);
        $popoverTrigger.attr('data-content', tempContainer.html());

        // 2. 如果popover当前处于显示状态,直接更新页面上的popover内容
        const popoverInstance = $popoverTrigger.data('bs.popover');
        if (popoverInstance && popoverInstance.tip().is(':visible')) {
            popoverInstance.tip().find('.update-text').text(newText);
        }
    }

    // 初始化popover的代码保持不变
    $(".hover_content").popover({
        trigger: "manual",
        animation: false,
        delay: {
            "hide": 30
        }
    }).on("mouseenter", function() {
        var _this = this;
        $(this).popover("show");
        $(".popover").on("mouseleave", function() {
            $(_this).popover('hide');
        });
    }).on("mouseleave", function() {
        var _this = this;
        if (!$(".popover:hover").length) {
            $(_this).popover("hide");
        }
    });
</script>

关键说明

  • 解析HTML修改文本:通过临时DOM容器解析data-content的HTML字符串,能精准定位到.update-text元素修改内容,避免直接字符串替换可能破坏HTML结构的问题。
  • 同步显示状态的popover:Bootstrap Popover显示后会生成独立DOM节点,修改原始触发元素的data-content不会自动刷新已显示的popover,因此需要直接操作popover的DOM节点。
  • 版本兼容:该方案适配Bootstrap 3/4版本;若使用Bootstrap 5,需将实例获取方式调整为$popoverTrigger.get(0)._popover。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:45:31