jQuery动态内容的点击不起作用

Jak*_*ake 1 javascript jquery dynamic click

我正在编写一个代码,我通过附加一个ul元素动态添加内容.

问题是如果我单击动态创建的名为savePalette的按钮它不起作用..虽然它确实适用于第一个,因为我在click函数之前定义了addPalette函数.

根据我的阅读,.on()应该适用于添加动态内容的情况.

这是HTML结构:

<ul class="palettes">
    <li class="paletteGroup">
        <ul>
            <li class="colorpalette" style="background-color: #00c4ff;"></li>
            <li class="colorpalette" style="background-color: #00a6ff;"></li>
            <li class="colorpalette" style="background-color: #0091ff;"></li>
            <li class="colorpalette" style="background-color: #007bff;"></li>
            <li class="paletteControls">
                <button name="savePalette" class="savePalette">Save</button>
                <button name="changeName" class="changeName">Change Name</button>
            </li>
        </ul>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function addPalette() {
        var defaultColors = ["#00c4ff", "#00a6ff", "#0091ff", "#007bff"];

        $("ul.palettes").append("<li class=\"paletteGroup\"><ul>" +
        "<li class=\"paletteControls\"><button name=\"savePalette\" class=\"savePalette\">Save</button>" +
        "<button name=\"changeName\" class=\"savePalette\">Change Name</button></li>" +
        "</li></ul></li>");
        $("li.paletteGroup:last").hide();

        for(var i = 1; i <= 4; i++) {
            var j = (4 - i);
            $("ul.palettes li.paletteGroup:last ul").prepend("<li class=\"colorpalette\" style=\"background-color:" + defaultColors[j] + "\"></li>");
        }

        $("li.paletteGroup").show("fade", 500);
    }
Run Code Online (Sandbox Code Playgroud)

然后在脚本标签的顶部

addPalette();

$("button[name=savePalette]").on("click", function() {
    alert("Heeeeej");
});
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 7

您必须将动态元素的选择器放在selector参数中:

$("ul.palettes").on("click", "button[name=savePalette]", function() {
    alert("Heeeej");
});
Run Code Online (Sandbox Code Playgroud)