【问题标题】:jQuery - re-execute a function on button clickjQuery - 在按钮单击时重新执行一个函数
【发布时间】:2016-10-05 11:33:09
【问题描述】:

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

  • 我不能让浏览器窗口刷新
  • 所有代码都在 setTimeout() 参数中 - 不确定这是否真的重要

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

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

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

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

【问题讨论】:

标签: javascript jquery click


【解决方案1】:

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

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

function someCode () {
    // Your code here
} 

setTimeout (someCode, 2500);

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

如有疑问,请创建一个函数。

【讨论】:

    【解决方案2】:

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

    function myFunc()
    {
        // all the scripts that need to run
    }
    
    setTimeout(function() {
         myFunc();
     }, 2500);
    
     $('.btn').click(function() {
         myFunc();
     });
    

    【讨论】:

    • 您实际上不需要将myFunc 包装在函数中,您可以通过引用超时和点击函数来简单地传入函数。
    • 必须选择最先出现的答案,但这也是一个完美的解决方案,非常感谢!
    【解决方案3】:

    您可以在一个变量中设置函数,该变量可以在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>

    【讨论】:

      【解决方案4】:

      Javascript 对象通过引用传递,因此您可以在每个 callack 中按名称引用函数。

      function myFunc(){
        // all the scripts that need to run
      }
      
      setTimeout(myFunc, 2500)
      
      $('.btn').click(myFunc)
      &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-03
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 2021-01-07
        • 1970-01-01
        • 2020-04-24
        • 2013-07-05
        相关资源
        最近更新 更多