javascript - 如何在jquery中一次性调用函数

标签 javascript jquery html css

我制作了一个计数器 $counter 并将其限制设置为 10。现在在点击屏幕后,我添加了 div 标签并将计数器增加 1。但同时我在每个 div 上添加了一个关闭按钮并且每次单击 div.close 时计数器减 1。但是由于同一个类.close。但是一次单击计数器会减少很多次。

$(canvas).click(function() {
    $counter++;
    if($counter<10)
    $("#color-swatch").prepend("<div>"+color+"<div class='close'></div></div>");
    $(".close").click(function()
    {
        $(this).parent().remove();
        $counter--;
        console.log($counter);

    });
});

只需单击关闭 div 即可输出控制台。

10 9 8个 7 6

最佳答案

这里的问题是您将点击处理程序多次绑定(bind)到同一个元素。

这里的一个解决方案是使用事件委托(delegate)而不是将处理程序绑定(bind)到另一个点击处理程序中

$(canvas).click(function () {
    $counter++;
    if ($counter < 10) {
        $("#color-swatch").prepend("<div>" + color + "<div class='close'></div></div>");
    }
});

$("#color-swatch").on('click', '.close', function () {
    $(this).parent().remove();
    $counter--;
    console.log($counter);
});

另一种是只针对新添加的元素

$(canvas).click(function () {
    $counter++;
    if ($counter < 10) {
        var $el = $("<div>" + color + "<div class='close'></div></div>").prependTo("#color-swatch");
        $el.find(".close").click(function () {
            $(this).parent().remove();
            $counter--;
            console.log($counter);

        });
    }
});

关于javascript - 如何在jquery中一次性调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225781/

相关文章:

Jquery 完整日历和动态事件颜色

html - 如何使具有表单元素的物化表更紧凑

html - 如何在输入文本占位符中添加 HTML 换行符

javascript - 拆分字符串然后访问数组

javascript - AJAX - jQuery - 三重动态下拉菜单

javascript - 带数据库的 Electron 应用程序

javascript - 单击提交按钮后显示隐藏的表格

javascript - 如何将字符串点表示法转换为嵌套对象?

javascript - JSON - 操作元素

php - 使用 jQuery 加载函数作为绝对路径