jQuery - 防止第一次点击激活
问题描述:
我有一个问题,需要一个奇怪的解决方法。基本上,我在平板电脑上有一个菜单,需要忽略用户第一次点击/选择链接,但是一旦第二次选择,它就会执行链接。jQuery - 防止第一次点击激活
所以说,我们这里有一个链接,去谷歌: Google.com
我怎样才能阻止,直到它的点击一次加载链接窗口?这样,如果有多个子菜单可以显示子菜单,则可以单击多个菜单项。
我环顾四周,所有我发现是event.stopImmediatePropagation();
但这完全忽略所有点击事件,这不是我所需要的。
可以做到这一点吗?应该有办法检测点击次数,当然?
答
您可以使用类似这样的东西:
var clickBtn = false;
$('#link').click(function(e){
if(clickBtn == false){
e.preventDefault();
}
clickBtn = true;
});
答
你可以尝试添加一个变量来检测是否被点击尚未:
var hasBeenClicked = false;
然后单击时:
if (hasBeenClicked) {
// logic to follow the link
} else {
hasBeenClicked = true;
}
答
我会制作一个全局可访问的计数器变量,然后围绕您想要在该点击函数内运行的if语句做出if语句,以便它只在需要时执行。例如:
var counter = 0;
example.addEventListener("click", function() {
if (counter > 0) {
//do action
}
counter++;
}
希望帮助!
答
您可以检查一类说,.clicked
,若发现按照链接,如果没有找到 - 那一定是第一次点击 - 不按照链接,添加类clicked
:
$('.a').on('click', function(e) {
if(!$(this).is('.clicked')) {
e.preventDefault();
$(this).addClass('clicked');
}
});
答
达到要求的一种方法是使用数据属性。
当用户点击链接时,检查该链接元素上是否存在数据属性(比如说'数据点击一次')。如果没有,请将此属性设置为“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属性()总是返回字符串
谢谢,我删除了警报();因为这对我来说不是必需的,但除此之外,我得到它的工作,所以谢谢你! :) –
很高兴帮助:) – wayzz