【问题标题】:jQuery - Prevent activation on first clickjQuery - 防止第一次点击激活
【发布时间】:2016-01-14 05:03:59
【问题描述】:

我有一个问题需要一个奇怪的解决方法。本质上,我在平板电脑上有一个菜单,需要忽略用户第一次点击/选择链接,但一旦第二次选择,它就会执行链接。

假设我们在这里有一个指向 Google 的链接: Google.com

如何阻止窗口加载链接,直到它被第二次点击?这样如果多个菜单项有子菜单项来显示子菜单,就可以单击它们。

我环顾四周,发现的只有event.stopImmediatePropagation();

但这完全忽略了所有点击事件,这不是我需要的。

可以这样做吗?应该有办法检测点击次数吧?

【问题讨论】:

    标签: jquery hyperlink onclick


    【解决方案1】:

    你可以使用类似的东西:

    var clickBtn = false;
    
    $('#link').click(function(e){
        if(clickBtn == false){
            e.preventDefault();
        }
        clickBtn = true;
    });
    

    Fiddle

    【讨论】:

    • 谢谢,我删除了 alert();因为这对我来说不是必需的,但除此之外我让它工作了,所以谢谢! :)
    【解决方案2】:

    你可以检查一个类说,.clicked,如果找到请点击链接,如果没有找到——那必须是第一次点击——不要点击链接,添加课程clicked

    $('.a').on('click', function(e) {
        if( !$(this).is('.clicked') ) {
            e.preventDefault();
            $(this).addClass('clicked');
        }
    });
    

    DEMO

    【讨论】:

      【解决方案3】:

      您可以尝试添加一个变量来检测它是否已被点击:

      var hasBeenClicked = false;
      

      然后当它被点击时:

      if (hasBeenClicked) {
          // logic to follow the link
      } else {
          hasBeenClicked = true;
      }
      

      【讨论】:

        【解决方案4】:

        我会创建一个全局可访问的计数器变量,然后围绕您想要在该 click 函数中运行的内容创建一个 if 语句,以便它仅在您需要时执行。例如:

        var counter = 0;
        
        example.addEventListener( "click", function() {
            if ( counter > 0 ) {
                //do action
            }
            counter++;
        }
        

        希望有帮助!

        【讨论】:

          【解决方案5】:

          实现需求的一种方法是使用数据属性。

          当用户单击链接时,检查该链接元素上是否存在数据属性(比如说“数据单击一次”)。如果不是,请将此属性设置为“真”。如果该属性存在,则执行显示菜单的代码。

          $('a#menu').on('click', function(){
              var $a = $(this);
              if($a.attr('data-clicked-once') === 'true'){
                  //show the menu
              }else{
                  $a.attr('data-clicked-once','true');
              }
          });
          

          请注意,当您从 .attr() 获取属性时,它总是返回字符串

          【讨论】:

            猜你喜欢
            • 2012-08-20
            • 1970-01-01
            • 2014-05-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多