每页刷新一次如何执行一次功能?

时间:2016-08-02 23:07:00

标签: javascript jquery function

我有这样的代码:

function myfunc () {
    alert('executed');
}

$('.classname').on('click' function () {
    myfunc();
});

我想一次运行myfunc。我的意思是,每当用户点击.classname元素时,我都不想执行它。我想我需要将函数调用转换为条件。像这样:

if ( /* that function never executed so far */ ) {
    myfunc();
}

我该怎么做?

5 个答案:

答案 0 :(得分:2)

使用jQuery的最简单方法是使用.one

if (isset($row["prpop2"])) {
    $prop2 = $row["prop2"];
}
function myfunc() {
  alert('executed');
  
}
 
$('.classname').one('click', function() {   
  myfunc(); 
});

答案 1 :(得分:1)

您应该删除正在调用的函数中的事件侦听器:

function myfunc () {
  alert('executed');
  $('.classname').off('click', myfunc);
}

$('.classname').on('click', myfunc);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div class='classname'>Click Me</div>

不要像其他帖子描述那样设置一个全局变量 - 没有必要,然后你仍然在做一个不必要的函数调用。这样可以确保永远不再调用该函数,并且不会列出该事件。

答案 2 :(得分:1)

$( document ).ready(function() {

var hasBeenExecuted = false;

function myfunc () {
    alert('executed');
    hasBeenExecuted = true;
}

$('.classname').on('click' function () {
    if(!hasBeenExecuted){
       myfunc();
    }
});

});

答案 3 :(得分:0)

var functionWasRun = false;

function myfunc () {
    functionWasRun = true;
    alert('executed');
}


$(document).ready(function() {
    $('.classname').on('click', function () {
        if (!functionWasRun) {
         myfunc();
        }
    });
});

答案 4 :(得分:0)

我建议,作为全局变量的替代,为函数分配属性。

function myfunc () {
    alert('executed');
    myfunc.executed = true;
}

$('.classname').on('click', function () {
    if(!myfunc.executed) {
        myfunc();
    }
});

这具有以相同方式工作的优点,同时不会不必要地污染全局范围。但是,如果skyline3000's answer适合您,那么您应该使用它,因为它更清洁,更明智。