Javascript/Jquery 代码在第一个事件上运行一次,在第二个事件上运行两次,依此类推

标签 javascript jquery jinja2

我将此 JS 函数绑定(bind)到 HTML 按钮 onclick 属性:

function AddFbLikes() {
$('#fbform').on('submit', function(e) {
    e.preventDefault(); // prevent form submission
    $("input:checkbox:checked").each(function(idx, val){
        callResult(val.value);
    });
})}

假设我有 4 个 input 元素匹配条件,我将在 HTML 中附加 4 个元素(这就是 callResult() 的作用)。但如果我第二次点击该按钮,我会再获得 8 个,如果我点击 3 次,我会再获得 12 个..

我尝试过调试这个,但无法弄清楚。我来自 Python/Django,所以一定有一些我无法使用 Javascript 得到的东西。

最佳答案

您的函数 AddFbLikes 每次调用时都会为 $('#fbform') 找到的每个元素添加另一个事件监听器。这就是为什么它找到的四个元素从​​ 4 开始,然后每次增加 4。可能有更好的方法来构建您的代码,但考虑到您给我们的内容,请尝试 one 而不是 on ( http://api.jquery.com/one/ ):

function AddFbLikes() {
    $('#fbform').one('submit', function(e) {
        e.preventDefault(); // prevent form submission
        $("input:checkbox:checked").each(function(idx, val){
            callResult(val.value);
        });
    }
)}

关于Javascript/Jquery 代码在第一个事件上运行一次,在第二个事件上运行两次,依此类推,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47934618/

相关文章:

jquery - 使用jQuery动态添加类时如何显示div

Jquery UI 位置插件不适用于 margin 属性

python - flask 模板 : nginx cache or serve static assets called in jinja markups

jinja2 - 如何从 Jinja 中的字符串中删除尾随空格?

ansible - 在 Ansible 中创建已安装包的报告

javascript - 测试使用 jQuery 和 window 对象的 React 组件

javascript - Jquery 和 javascript - 函数结果,作为属性名称

javascript - 如何在 JavaScript 中将驼峰式字符串转换为破折号?

javascript - AngularJS 简单工厂导致无限循环 - 为什么? (代码笔)

javascript - 仅克隆并 insertAfter 一次