只运行一次javascript函数

时间:2014-05-25 21:00:39

标签: javascript jquery

我有这个简单的javascript函数:

<script type="text/javascript">
    var popup = '0';
    if(popup == '0') {
       $(document).ready(function () {     
            $(document).on('click', '.button', function(){
                  alert('test');
                  popup = '1';
            });
       }); 
    }
</script>

<button class="button">Test</button>

我希望该功能仅在第一次点击时发出提醒但是它仍在继续工作,尽管我将popup的值更改为1

3 个答案:

答案 0 :(得分:9)

您需要的是.one()功能。它确保代码只为您触发一次。

文档:http://api.jquery.com/one/

文档示例:

$( "#foo" ).one( "click", function() {
  alert( "This will be displayed only once." );
});

答案 1 :(得分:5)

编写代码如下:

<script type="text/javascript">
    var popup = '0';

     $(document).ready(function () {     
          $(document).on('click', '.button', function(){
             if(popup == '0') {
                alert('test');
                popup = '1';
             }
          });
     }); 
</script>

设置了单击侦听器后,之前的if语句的位置不再执行。只有点击功能中的代码。

或者,您可以取消绑定onClick侦听器,而不是设置popup = '1'。请尝试以下方法:

<script type="text/javascript">
    var popup = '0';

     $(document).ready(function () {     
          $(document).on('click', '.button', function(){
              alert('test');

              //unbinds *all* listeners previously registered on "document"
              $(document).unbind('click');
          });
     }); 
</script>

更清洁,正如Mathletics所提到的,从内存中清除不必要的回调。

答案 2 :(得分:1)

尝试:

<script type="text/javascript">
    var popup = '0';

       $(document).ready(function () {     
            $(document).on('click', '.button', function(){
                if(popup == '0') {
                  alert('test');
                }
                  popup = '1';
            });
       }); 
</script>

你有一个将弹出窗口设置为1的功能但从未再次检查其值。这样就可以检查它并且应该正常工作。