防止默认,直到连续两次单击
Preventdefault until two successive clicks
我正在尝试阻止菜单中的默认链接单击操作。我让它使用以下代码,但是,我注意到当我单击Link 1
然后Link 5
然后返回Link 1
时,会发生默认操作。
<ul class="menu">
<li><a href="page1.html">Link 1</a>
<ul>
<li><a href="page2.html">Link 2</a></li>
<li><a href="page3.html">Link 3</a></li>
<li><a href="page4.html">Link 4</a></li>
</ul>
</li>
<li><a href="page5.html">Link 5</a></li>
</ul>
.JS:
$(".menu a").one("touchstart, click", false);
我想做的是这样的:
- 阻止首次单击元素时执行默认操作
- 如果单击了另一个菜单项元素,请重置第一个元素的
.one()
,因此当再次单击它时,默认操作不会立即发生,直到进行第二次连续单击。
像这个例子
$(document).ready(function(){
var lastClicked;
$(".menu a").on("touchstart click", function(e){
if(lastClicked!==$(this).attr('href')){
e.preventDefault();
lastClicked=$(this).attr('href');
}
});
});
使用数据属性来设置临时值。
示例意识形态:
<a href="page1.html" data-proceed="false">Link 1</a>
<a href="page2.html" data-proceed="false">Link 2</a>
$('a').click(function(e) {
$('a').not(this).attr('data-proceed', 'false'); // reset to false for all other links. Use classes as per your requirement
if($(this).attr('data-proceed')==='false')
{
e.preventDefault(); // if this is the first time
$(this).attr('data-proceed', 'true'); // so that from the next click it will proceed
}
});
相关文章:
- 单击仅在第二次单击后有效
- 删除确认对话框在第一次单击时不起作用
- 在Rails中第一次单击后禁用链接,Coffeescription
- 在没有焦点的情况下捕获画布上的第一次单击事件
- Javascript onclick事件在第一次单击时未启动
- 只要用户将鼠标悬停在jQuery中的某个元素上,就可以执行多次单击
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- 无法在第一次单击时禁用链接,并在动画完成后重新启用
- 更改类名后,将第二次单击事件附加到元素
- 防止默认,直到连续两次单击
- 让窗口在一次单击触发两个页面重定向后保持焦点
- 奇怪的是,在第二次单击切换隐藏/显示按钮而不是第一次单击后,有两行有效
- 向同一按钮添加两次单击事件只能工作一次
- JQuery切换问题,需要两次单击
- jQuery完成的多部分表单需要两次单击才能识别.submit()和.click()事件处理程序
- 使用$(“[property=value]”).click(),我希望两次单击之间有一个延迟
- SVG元素中的Onclick需要初始的两次单击
- 要使用AngularJS修改html元素,必须点击两次单选按钮
- .change() 处理程序制作表单需要两次点击才能提交
- Javascript确认对话框出现两次;单击Element后返回