如何在JS / JQuery中只使函数执行一次

时间:2017-11-23 07:29:33

标签: javascript jquery

我有这样的结构:

// App.js
var APP = {
    viewIndex: function(){
        EVT.doSomething();
    },

    // Another function below
}

// Event.js

var EVT = {
    doSomething: function(){
        deleteField();

        function deleteField(){
            $("body").on("click", "#btn", function(){
                console.log("Clicked");
            })
        }
    }
}

我的项目是SPA想要的,所以当我想要更改页面时,它必须在App.js内执行一些功能,但我的问题是,当我拨打APP.viewIndex() (when i go to Index, go back, and go to index again(without refreshing page) )时, EVT -> doSomething()内的函数执行两次,所以我不知道如何防止它,

在我的控制台中我得到了这个:

  

已点击

     

已点击

*对不起,如果我的解释有点复杂

希望你们能帮我解决这个问题:D

感谢

1 个答案:

答案 0 :(得分:0)

使用属性记住您是否已拨打deleteField()

var EVT = {
    didSomething: false,
    doSomething: function(){
        if (!this.didSomething) {
            deleteField();
            this.didSomething = true;
        }
        function deleteField(){
            $("body").on("click", "#btn", function(){
                console.log("Clicked");
            })
        }
    }
}