我正在制作一个进度条,并希望它在视口中播放。我可以正常工作,但是现在每次都执行代码,并且我只需要运行一次即可。因为它现在创建了多个进度条。 ;-)
以下代码在Joomla扩展程序中使用。

(function ($) {
  $(document).ready(function() {
    // Function that checks if it is in view.
    $("<?php echo '#progress' . $module->id ?>").waypoint(function() {
      // Function that makes sure it only runs once.
      // -----------I need to use .one() here but how?
       // The location of the progressbar code for now lets put a alert in.
       alert("run only once");
    }, {
      offset: '50%'
    });
  });
})(jQuery);


我一直在阅读有关.one()函数以及如何在此处使用它的信息。但是我尝试了使用clickready的示例,而单击不是我想要的,但准备好可以解决问题,但没有任何效果。

最佳答案

您可以将$.Callbacks()"once"用作参数。

(function ($) {
  $(document).ready(function() {

    function runOnce() {
      // Function that makes sure it only runs once.
      // -----------I need to use .one() here but how?
       // The location of the progressbar code for now lets put a alert in.
       alert("run only once");
    }

    var callbacks = $.Callbacks("once");

    callbacks.add(runOnce);
    // Function that checks if it is in view.
    $("<?php echo '#progress' . $module->id ?>").waypoint(function() {
      callbacks.fire(runOnce);
    }, {
      offset: '50%'
    });
  });
})(jQuery);

关于javascript - jQuery在视口(viewport)中运行一次.one(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39709512/

10-13 02:52