Javascript 使用jQuery防止双击链接
使用jQuery防止双击链接的最佳方法是什么 我有一个触发ajax调用的链接,当ajax调用返回时,它会显示一条消息 问题是,如果在ajax调用返回之前双击或单击两次,页面上就会出现两条消息,而实际上我只需要一条 我需要一个按钮上的Javascript 使用jQuery防止双击链接,javascript,jquery,Javascript,Jquery,使用jQuery防止双击链接的最佳方法是什么 我有一个触发ajax调用的链接,当ajax调用返回时,它会显示一条消息 问题是,如果在ajax调用返回之前双击或单击两次,页面上就会出现两条消息,而实际上我只需要一条 我需要一个按钮上的禁用属性。但这对链接不起作用 $('a').on('click', function(e){ e.preventDefault(); //do ajax call }); 您可以使用属性,如下所示: $('a').on('click', funct
禁用属性。但这对链接不起作用
$('a').on('click', function(e){
e.preventDefault();
//do ajax call
});
您可以使用属性,如下所示:
$('a').on('click', function () {
var $this = $(this);
var alreadyClicked = $this.data('clicked');
if (alreadyClicked) {
return false;
}
$this.data('clicked', true);
$.ajax({
//some options
success: function (data) { //or complete
//stuff
$this.data('clicked', false);
}
})
});
您可以使用属性,如下所示:
$('a').on('click', function () {
var $this = $(this);
var alreadyClicked = $this.data('clicked');
if (alreadyClicked) {
return false;
}
$this.data('clicked', true);
$.ajax({
//some options
success: function (data) { //or complete
//stuff
$this.data('clicked', false);
}
})
});
您可以使用Jquery第二次禁用该链接上的单击事件
$(this).unbind('click');
请参阅此JSFIDLE以获取参考
您可以使用Jquery再次禁用该链接上的单击事件
$(this).unbind('click');
请参阅此JSFIDLE以获取参考
您可以为此使用虚拟类
$('a#anchorID').bind('click',function(){
if($(this).hasClass('alreadyClicked')){
return false;
}else{
$(this).addClass('alreadyClicked);
$/ajax({
success: function(){$('a#anchorID').removeClass('alreadyClicked');},
error: function(){$('a#anchorID').removeClass('alreadyClicked');}
});
}});
您可以为此使用虚拟类
$('a#anchorID').bind('click',function(){
if($(this).hasClass('alreadyClicked')){
return false;
}else{
$(this).addClass('alreadyClicked);
$/ajax({
success: function(){$('a#anchorID').removeClass('alreadyClicked');},
error: function(){$('a#anchorID').removeClass('alreadyClicked');}
});
}});
您可以禁用链接(例如,href=“#”
),并使用单击事件,使用jQueryone()
函数绑定到链接。您可以禁用链接(例如,href=“#”
),并使用单击事件,使用jQueryone()绑定到链接
函数。使用类“button”绑定所有链接,然后尝试以下操作:
$("a.button").click(function() { $(this).attr("disabled", "disabled"); });
$(document).click(function(evt) {
if ($(evt.target).is("a[disabled]"))
return false;
});
使用类“button”绑定所有链接并尝试以下操作:
$("a.button").click(function() { $(this).attr("disabled", "disabled"); });
$(document).click(function(evt) {
if ($(evt.target).is("a[disabled]"))
return false;
});
您需要
默认情况下,所有请求都是异步发送的(即,默认情况下设置为true)。如果需要同步请求,请将此选项设置为false
$.ajax({
async: false,
success: function (data) {
//your message here
}
})
您需要
默认情况下,所有请求都是异步发送的(即,默认情况下设置为true)。如果需要同步请求,请将此选项设置为false
$.ajax({
async: false,
success: function (data) {
//your message here
}
})
。您可以在第一次单击后通过CSS属性禁用按钮(并在ajax请求后或使用setTimeout删除此属性),或者使用jQuery.one()函数在第一次单击后删除触发器(而不禁用按钮)
var normal_按钮=$(“#normal”),
一个按钮=$(“#一”),
禁用按钮=$(“#禁用”),
结果=$(“#结果”);
正常按钮('点击',功能(){
result.removeClass('hide').append(normal_button.html()+'
);
});
一个按钮。一个('click',函数(){
result.removeClass('hide').append(one_button.html()+'
);
});
禁用按钮('单击',功能(){
禁用按钮属性('disabled',true);
setTimeout(函数(){
result.removeClass('hide').append(禁用了_button.html()+'
);
}, 2000);
});
。您可以在第一次单击后通过CSS属性禁用按钮(并在ajax请求后或使用setTimeout删除此属性),或者使用jQuery.one()函数在第一次单击后删除触发器(而不禁用按钮)
var normal_按钮=$(“#normal”),
一个按钮=$(“#一”),
禁用按钮=$(“#禁用”),
结果=$(“#结果”);
正常按钮('点击',功能(){
result.removeClass('hide').append(normal_button.html()+'
);
});
一个按钮。一个('click',函数(){
result.removeClass('hide').append(one_button.html()+'
);
});
禁用按钮('单击',功能(){
禁用按钮属性('disabled',true);
setTimeout(函数(){
result.removeClass('hide').append(禁用了_button.html()+'
);
}, 2000);
});
我带来了下一个简单的jquery插件:
(function($) {
$.fn.oneclick = function() {
$(this).one('click', function() {
$(this).click(function() { return false; });
});
};
// auto discover one-click elements
$(function() { $('[data-oneclick]').oneclick(); });
}(jQuery || Zepto));
// Then apply to selected elements
$('a.oneclick').oneclick();
或者只需在html中添加自定义数据atribute:
<a data-oneclick href="/">One click</a>
我带来了下一个简单的jquery插件:
(function($) {
$.fn.oneclick = function() {
$(this).one('click', function() {
$(this).click(function() { return false; });
});
};
// auto discover one-click elements
$(function() { $('[data-oneclick]').oneclick(); });
}(jQuery || Zepto));
// Then apply to selected elements
$('a.oneclick').oneclick();
或者只需在html中添加自定义数据atribute:
<a data-oneclick href="/">One click</a>
虽然提供了一些很好的解决方案,但我最终使用的方法是只使用一个
,我可以设置disabled
属性
有时最简单的解决方案是最好的。虽然有一些很好的解决方案,但我最终使用的方法是只使用一个
,我可以设置禁用的属性
有时最简单的解决方案是最好的。你能添加你的代码或JSFIDLE吗?我还没有。这可能是on()
和off()
的重复->你能添加你的代码或JSFIDLE吗?我还没有。这可能是on()
和off()
的重复->我说的链接。不是表单/按钮你没有指定你的代码,所以我只是给出了你的提示,通过它你可以达到你的要求。不是表单/按钮你没有指定你的代码,所以我只是给出了你的提示,你可以通过它来实现你的要求。这对我有什么帮助?一旦收到第一个请求的响应,这将发送下一个请求。我得试一试。如果有人捣乱链接,他们会排队吗?如果设置async:true,那么该语句将开始执行,并调用下一个语句,而不管该async语句是否已完成yetSettingasync:true
将冻结浏览器,直到请求完成为止,这打破了AJAX的异步特性。这是什么收到吗?一旦收到第一个请求的响应,就会发送下一个请求。我得试一试。如果有人捣乱链接,他们会排队吗?如果设置async:true,那么该语句将开始执行,并且将调用下一个语句,而不管该async语句是否已完成yetSettingasync:true
将冻结浏览器,直到请求完成为止,这与AJAX的异步特性不同。