如何在首次使用jQuery点击后停止函数传播
How to stop function propagation after first click with jQuery
我有一些点击功能。。。整个操作很好,但如果我快速双击调用按钮,某些元素会生成两次。你能告诉我如何在第一次点击后停止函数传播吗?非常感谢帮助,这是我的代码:
$('#start_panel ul li').click(function(event){
if($(this).hasClass('eng')){
...
}
else if($(this).hasClass('ger')){
...
}
else if($(this).hasClass('pln')){
...
}
event.stopPropagation();
});
var clicked = false;
$('#start_panel ul li').click(function(event){
if (clicked) return;
clicked = true;
或者使用一个函数(略有不同:现在每个li元素只会处理一次点击):
$('#start_panel ul li').one('click', function(event){
试试这个:
var myClicker = function(event){
var self = event.currentTarget;
if($(self).hasClass('eng')){
...
}
else if($(self).hasClass('ger')){
...
}
else if($(self).hasClass('pln')){
...
}
$(self).one('click', myClicker);
});
$('#start_panel ul li').one('click', myClicker);
var i=0;
$('#start_panel ul li').click(function(event){
if(i==1){
i=0;
return false;
}
if($(this).hasClass('eng')){
...
}
else if($(this).hasClass('ger')){
...
}
else if($(this).hasClass('pln')){
...
}
i++;
});
要清除以前的请求,请使用Stop(true,true)
$('#start_panel ul li').stop(true,true).click(function(event){
if($(this).hasClass('eng')){
...
}
else if($(this).hasClass('ger')){
...
}
else if($(this).hasClass('pln')){
...
}
event.stopPropagation();
});
您可以在第一次点击后解除对点击事件的绑定:
$('#start_panel ul li').click(function(event){
$(this).unbind('click');
if($(this).hasClass('eng')){
...
}
else if($(this).hasClass('ger')){
...
}
else if($(this).hasClass('pln')){
...
}
event.stopPropagation();
});
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 如何在首次使用jQuery点击后停止函数传播
- 我可以停止某个函数上的事件传播吗
- 如何在 javascript 中传播嵌套异步函数的返回值
- 将角度对象函数调用传播到内部对象
- 当调用jQuery's.trigger()函数到绑定到该元素的其他处理程序的传播停止
- e.停止传播();在自定义函数中
- 停止多个内联函数JS的事件传播
- jQuery Draggable Stop:停止元素传播的函数
- 调用此函数时防止传播到事件处理程序.检入另一个函数
- 解析传播多个调用异步函数