JQuery.on() 堆积起来

JQuery.on() piles up

为什么

JQuery.on('sameEventName.',function(){...});

堆积取决于代码工作了多少次?有什么办法可以防止这种情况发生吗??

这是fiddle

我猜您想实现即使多次点击也只有 1 个事件侦听器的行为。尽管下面的方法并不理想,但它是最简单的解决方法。使用 .off 函数删除之前的事件侦听器。

$(document).off('aCustomEventName');
$(document).on('aCustomEventName', function(){...});

完整片段:

$('#set').on('click', function () {
    $(document).off('aCustomEventName');
    $(document).on('aCustomEventName', function (event) {
        alert('event caught');
    });
});

$('#trigger').on('click', function () {
    $(document).trigger("aCustomEventName");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
    Click on Set Listener button a few times then click on the Trigger Event button..
</div>

<button id="set">Set Listener</button>
<button id="trigger">Trigger Event</button>

还有 fixed jsfiddle(与代码段相同)。