jQuery - 在按钮点击时重新执行一个函数

时间:2016-10-05 11:33:09

标签: javascript jquery click

我有一个非常独特的情况,我需要一堆jQuery代码才能在按钮点击时重新执行。增加的并发症是:

  • 我无法允许浏览器窗口刷新
  • 所有代码都在setTimeout()参数范围内 - 不确定这是否真的重要

我无法将代码包装在click事件中,因为它需要在首次打开或刷新页面时自动运行。为了添加一些上下文,我嘲笑了以下内容:

 setTimeout(function() {
     // all the scripts that need to run
 }, 2500);

 $('.btn').click(function() {
     // re-run the above code without refreshing window or browser
 });

在这种情况下,有没有办法在点击按钮上重新运行代码?

4 个答案:

答案 0 :(得分:2)

这实际上是一个相当普遍的问题。

创建一个包含在两个地方运行所需代码的函数,并从setTimeout和onclick处理程序调用该函数:

function someCode () {
    // Your code here
} 

setTimeout (someCode, 2500);

$('.btn').click(someCode);

如有疑问,请提供帮助。

答案 1 :(得分:2)

将所有需要运行的代码放在自己的函数中,并在两个地方调用该函数

function myFunc()
{
    // all the scripts that need to run
}

setTimeout(function() {
     myFunc();
 }, 2500);

 $('.btn').click(function() {
     myFunc();
 });

答案 2 :(得分:1)

您可以做的是在变量中设置函数,可以在setTimeout()click()事件中调用

var nameOfFunction = function() {
  console.log('Hello World!');
}
setTimeout(nameOfFunction, 2500);

 $('.btn').on('click', function(e) {
     e.preventDefault();
     nameOfFunction();
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="btn">Click Me</button>

答案 3 :(得分:1)

Javascript对象通过引用传递,因此您只需在每个callacks中按名称引用该函数。

function myFunc(){
  // all the scripts that need to run
}

setTimeout(myFunc, 2500)

$('.btn').click(myFunc)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>