2015-10-15 148 views
1

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

所以说,我们这里有一个链接,去谷歌: Google.com

我怎样才能阻止,直到它的点击一次加载链接窗口?这样,如果有多个子菜单可以显示子菜单,则可以单击多个菜单项。

我环顾四周,所有我发现是event.stopImmediatePropagation();

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

可以做到这一点吗?应该有办法检测点击次数,当然?

回答

1

您可以使用类似这样的东西:

var clickBtn = false; 

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

Fiddle

+0

谢谢,我删除了警报();因为这对我来说不是必需的,但除此之外,我得到它的工作,所以谢谢你! :) –

+0

很高兴帮助:) – wayzz

0

你可以尝试添加一个变量来检测是否被点击尚未:

var hasBeenClicked = false; 

然后单击时:

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

我会制作一个全局可访问的计数器变量,然后围绕您想要在该点击函数内运行的if语句做出if语句,以便它只在需要时执行。例如:

var counter = 0; 

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

希望帮助!

1

您可以检查一类说,.clicked,若发现按照链接,如果没有找到 - 那一定是第一次点击 - 不按照链接,添加类clicked

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

DEMO

0

达到要求的一种方法是使用数据属性。

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

$('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属性()总是返回字符串