【问题标题】:How to make a jquery click event fire only on first click如何使 jquery 单击事件仅在第一次单击时触发
【发布时间】:2012-10-04 20:07:54
【问题描述】:

我有两个 div(.basic1 和 .basic2)。我希望 .basic1 在点击时淡出,而 .basic2 在我工作出色的情况下淡出。唯一的问题是一旦.basic2淡入,如果用户继续点击链接(.navbar1),它会一遍又一遍地淡入这个div。我知道我需要使用 .bind() 函数,但我似乎无法弄清楚在我的代码中放置它的位置。谢谢!

$(document).ready(function() {
    $('.navbar1').click(function(e){
        e.preventDefault();

        $('.basic2').hide().load('.basic2', function() {
            $(this).delay(600).fadeIn(1000);
            $('.basic1').fadeOut(1000);
        });
    });
});

【问题讨论】:

    标签: jquery


    【解决方案1】:

    使用.one():

    $('.navbar1').one('click', function(e) {
    

    一旦触发click 事件,它就会解除绑定。

    如果您不想双击某个元素,则应该使用以下方法:

    $(document).on('click', '.navbar1:not(.clicked)', function() {
        // ...
    });
    

    要使.navbar1 无法点击,只需运行$('.navbar1').addClass('clicked')。要使其可点击,请执行相反的操作。

    【讨论】:

    • 呸,破坏了我的响应时间。 +1。
    • @jcesar:谢谢,我已经添加了。
    • 如果您不只是单击 .navbar1,我只想触发单击功能怎么办?这可能吗?
    • @user1745398:我不完全确定您的意思,但请参阅我的编辑。
    • 在 jQuery Docs 上解释得更好
    【解决方案2】:

    有关一次性事件处理程序,请参阅 jQuery one()。即

    $(document).ready(function() {
        $('.navbar1').one('click', function(e){
            e.preventDefault();
    
            $('.basic2').hide().load('.basic2', function() {
                $(this).delay(600).fadeIn(1000);
                $('.basic1').fadeOut(1000);
            });
        });
    });
    

    【讨论】:

      【解决方案3】:

      jQuery 正好为此提供了.one() 方法。

      $(document).ready(function() {
          $('.navbar1').one('click', function(e){
              e.preventDefault();
              $('.basic2').hide() 
              .load('.basic2', function() {
                  $(this).delay(600).fadeIn(1000);
                  $('.basic1').fadeOut(1000);
              });
          });
      });
      

      【讨论】:

        【解决方案4】:

        使用现代 Js 事件,带有“once”!

        const navbar = document.getElementsByClassName("navbar1")[0];
        navbar.addEventListener("click", function() {
            // Add one-time callback
        }, {once : true});
        

        Documentation, CanIUse

        【讨论】:

        猜你喜欢
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-19
        相关资源
        最近更新 更多