HTML:在字符串中将字符串嵌套在属性中

问题描述 投票:1回答:1

我的网站包含带HTML代码的bootstrap popovers。这样的popover看起来像这样(而不是弹出HTML,我已经放置了一个占位符以便于阅读):

<mark data-content="Fancy HTML here" data-html="true" data-toggle="popover">
    This mark has a popover
</mark>

data-content中插入真实的HTML会带来正确转义引号的问题。我发现了这个问题,看起来完全相同:How do I encode html for Bootstrap popover and tooltip content

接受的答案建议将引号转义为&quot;这不起作用,转义的引号未正确解析。我在这个小提琴中树立了一个例子:https://jsfiddle.net/z4t2sud3/3/

另一种选择是在弹出窗口中使用单引号'作为字符串。此选项也在小提琴中,它可以正常工作。

但是,如果我想更深地嵌套呢?例如,我插入data-content的HTML也可以包含弹出窗口。虽然这看起来是一个非常糟糕的设计理念,但让它工作会很好。

这是双嵌套popover的小提琴:https://jsfiddle.net/cwz3sayj/3/

javascript html bootstrap-4
1个回答
1
投票

希望下面的代码段看起来像您想要的,您可以在创建弹出窗口实例时传递一个选项,您可以在其中设置单击实例时将显示的内容。由于首次运行脚本时DOM中不存在第一个级别,因此必须在单击第一个级别后激活第二个弹出窗口。使用模板文字,您可以在您正在编写的html代码中使用撇号或引号。

$('#firstPopover')
    .popover({
        html: true,
        content: `<button id="secondPopover" class="btn">
                      Goto second level
                  </button>`
    })
    .on('shown.bs.popover', function() {
        $('#secondPopover').popover({
            html: true,
            content: `This is the last level`
        });
    });
<br />
<button id="firstPopover" data-html="true" class="btn">
  Goto first level
</button>

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>

唯一的问题是现在看到第一层在第二层之前关闭。

© www.soinside.com 2019 - 2024. All rights reserved.