如何在动态创建的列表项中添加弹出式菜单?

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

我有以下代码。点击现有的列表项,就会显示出弹出窗口。

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Test</title>

    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        $(function () {
            $('[data-toggle="popover"]').popover()
        })
    </script>

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"/>
</head>

<body>
    <div class="container">
        <div class="card" style="width: 18rem;">
            <div class="card-header">
                Featured
            </div>
            <ul id="card-list" class="list-group list-group-flush">
                <li id="card-item" class="list-group-item" data-toggle="popover" title="Rule Details" data-placement="top" data-html="true" data-content="&lt;h3&gt;Popover Content&lt;/h3&gt;">Cras justo odio</li>
            </ul>
        </div></br>
        <button id="test" type="button" class="btn btn-outline-dark btn-sm">Test</button>
    </div>
</body>

</html>

上面的代码有一个测试按钮,用于将项目添加到当前列表中。我使用下面的代码来定义新的项目,期间我设置了弹出式属性。可以添加新的列表项,但是点击它们并不能弹出弹出器。请大家帮忙!

let listItem = document.createElement('li');
listItem.innerHTML = "Test";
listItem.className = "list-group-item";
listItem.setAttribute("data-toggle", "popover");
listItem.setAttribute("title", "Rule Details");
listItem.setAttribute("data-placement", "top");
listItem.setAttribute("data-html", "true");
listItem.setAttribute("data-content", "<strong>test Hello World</strong>");
document.getElementById("card-list").appendChild(listItem);
javascript popover listitem
1个回答
0
投票

你必须在新创建的元素上初始化popover。由于popover是一个jQuery插件,将你的元素转换为jQuery对象,并应用popoper,然后再加上像。

let listItem = document.createElement('li');
listItem.innerHTML = "Test";
listItem.className = "list-group-item";
listItem.setAttribute("data-toggle", "popover");
listItem.setAttribute("title", "Rule Details");
listItem.setAttribute("data-placement", "top");
listItem.setAttribute("data-html", "true");
listItem.setAttribute("data-content", "<strong>test Hello World</strong>");
listItem = $(listItem);
listItem.popover();
$("#card-list").append(listItem);
© www.soinside.com 2019 - 2024. All rights reserved.