javascript - jQuery 单击触发两次

标签 javascript jquery

我有这个jsfiddle:http://jsfiddle.net/us28bg4u/1/

为什么,当我按“First”->“Left”时,该操作仅被触发一次。但是当我再次执行此操作时,该操作会触发两次,第三次按相同的操作时,它会触发三次,依此类推。

我不明白为什么它会堆积起来。有人可以启发我吗? :)

我尝试过:
e.stopPropagation();
e.preventDefault();
- 但似乎没有什么可以阻止点击次数的累积。

我的js看起来像这样:

    var side = '';
    var action = '';

    $(document).ready(function () {
        $(".first").click(function (e) {
            logit("First pressed");
            preStart('first');
        });

        $(".second").click(function (e) {
            logit('Second pressed');
            preStart('second');
        });

        function preStart(action) {
            $("#overlay").fadeIn(200);

            $(".leftside").click(function (e) {
                side = "left";
                $("#overlay").fadeOut(200);

                logit('Starting ' + action + ' (' + side + ')');
             });

            $(".rightside").click(function (e) {
                side = "right";
                $("#overlay").fadeOut(200);

                logit('Starting ' + action + ' (' + side + ')');
            });
        }

        function logit(logtxt){
            $("#log").append("<li>"+logtxt+"</li>");

        }
    });

这与另一个函数中的 click() 函数有关吗?

最佳答案

事件绑定(bind)可以堆叠。在再次绑定(bind)事件之前,在 preStart 内部通过将 .unbind() 添加到方法链来清除以前的绑定(bind),如下所示:

    function preStart(action) {
        $("#overlay").fadeIn(200);

        $(".leftside").unbind("click").click(function (e) {
            side = "left";
            $("#overlay").fadeOut(200);

            logit('Starting ' + action + ' (' + side + ')');
         });

        $(".rightside").unbind("click").click(function (e) {
            side = "right";
            $("#overlay").fadeOut(200);

            logit('Starting ' + action + ' (' + side + ')');
        });
    }

关于javascript - jQuery 单击触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219383/

相关文章:

javascript - 防止通过 JQuery 提交表单时刷新页面

php - 将 MySQL 数据导入到单个 Bootstrap 模态框中?

javascript - 使用 jquery html() 将脚本插入到新窗口

javascript - 如何创建幻灯片计时器并添加功能选项卡

javascript - 使用 jquery 在元素中查找 URL

javascript - 组合两个非常相似但又包含明显差异的函数

javascript - 如何读取表单中的输入数据?

javascript - 多个 Dropzone.js 按钮

javascript - 首次加载网站后,网站 javascript 无法在 IE 上运行

javascript - 克隆具有选定值的选择元素