javascript - jquery - 定义加载效果仅出现一次

标签 javascript jquery

单击某个图标时,我会向 DOM 添加一条加载消息。问题是,如果用户单击两次(在加载最终消息时,他会看到此消息两次......)。

如何仅防止每个屏幕出现第二个“正在加载...”?我永远不会同时想要多个。

$(document).on('page:change', function () {
    //show loading message
    $("#icon1, #icon2, #icon3").click(function(e) {
      e.preventDefault();
      $("Loading ...")
      .insertAfter( $( "#icon1" ) );
    });    
  });

注意:一些用户建议使用 .one:我认为它不起作用,因为这意味着我只能单击一次,然后什么也不会发生。这不是我想做的。我希望当用户看到“正在加载...”时,他看不到另一个“正在加载...”,但他仍然可以单击一次,看到“正在加载...”,然后当“正在加载...”时消失后,他可以单击并看到它再次出现。

最佳答案

您可以使用 bool 变量,并检查它是 true 还是 false

$(document).on('page:change', function () {
    //show loading message
    var isLoading = false;
    $("#icon1, #icon2, #icon3").click(function(e) {
      if(isLoading == true) return;
      isLoading = true;
      e.preventDefault();
      $("Loading ...")
      .insertAfter( $( "#icon1" ) );

     //After finishing loading
     isLoading = false;
    });    
  });

关于javascript - jquery - 定义加载效果仅出现一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37908681/

相关文章:

javascript - 在 jQuery 中执行 PHP 代码

javascript - 单击按钮时隐藏 JQuery css

javascript - 如何让我的选择列表滚动到底部?

javascript - 在页面滚动时更改元素样式

javascript - 如何将变量从 javascript 传递到表单?

javascript - 基于浏览器窗口大小的条件 javascript 执行?

javascript - 使用 exec() 匹配字符串

javascript - jquery中如何监听事件?

javascript - Eslint 规则在 import 中添加新行

javascript - 在 TypeScript 中使用 subscribe 方法操作值