Javascript 允许jquery。一种在Ajax调用后再次单击的方法
我有一个点击触发付款。我正在使用.One方法来禁止进一步的点击,但如果付款被拒绝,我想重新启用点击进行另一次尝试-当然,再次尝试。如果再次下降,让这种情况再次发生Javascript 允许jquery。一种在Ajax调用后再次单击的方法,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个点击触发付款。我正在使用.One方法来禁止进一步的点击,但如果付款被拒绝,我想重新启用点击进行另一次尝试-当然,再次尝试。如果再次下降,让这种情况再次发生 $(".pay").one("click", function(event){ ...//payment code executes }); 阿贾克斯 一种方法是在ajaxsuccess中再次定义事件 $.ajax({ ... success: function(data){
$(".pay").one("click", function(event){
...//payment code executes
});
阿贾克斯
一种方法是在ajaxsuccess中再次定义事件
$.ajax({
...
success: function(data){
$('.pay').html(data); //comes back declined. Re-enable .one click again.
$(".pay").one("click", function(event){
...//payment code executes
});
}
一种方法是在ajaxsuccess中再次定义事件
$.ajax({
...
success: function(data){
$('.pay').html(data); //comes back declined. Re-enable .one click again.
$(".pay").one("click", function(event){
...//payment code executes
});
}
JQuery的较新版本
$.ajax()
返回承诺,允许您在ajax调用成功或失败时轻松执行最后一步
var jqxhr = $.ajax("example.php")
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
// re-apply click event
$(".pay").one("click", function(event) {
});
});
JQuery的较新版本
$.ajax()
返回承诺,允许您在ajax调用成功或失败时轻松执行最后一步
var jqxhr = $.ajax("example.php")
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
// re-apply click event
$(".pay").one("click", function(event) {
});
});
我想说,最好的办法是:
- 添加一个类
- 检查类是否存在,然后不执行
- 启动AJAX调用
- 删除该类
.addClass();
.removeClass();
而不是一次又一次地编写整个函数,复制代码
更新:如果DOM操作更难或成本更高,最好使用
$.data(元素、键、值)将上下文敏感值存储为键值对方法并设置执行的标志
感谢和他们的评论<代码>:D
示例 根据请求添加
我想说,最好的办法是:
- 添加一个类
- 检查类是否存在,然后不执行
- 启动AJAX调用
- 删除该类
.addClass();
.removeClass();
而不是一次又一次地编写整个函数,复制代码
更新:如果DOM操作更难或成本更高,最好使用
$.data(元素、键、值)将上下文敏感值存储为键值对方法并设置执行的标志
感谢和他们的评论<代码>:D
示例 根据请求添加
显式委托函数,而不是使用闭包
var triggerPayment = function (evt) {
... //payment code executes
}
$(".pay").one("click", triggerPayment);
$.ajax({
...
success: function(data){
if (isDeclined(data)) {
$(".pay").one("click", triggerPayment);
}
}
});
显式委托函数,而不是使用闭包
var triggerPayment = function (evt) {
... //payment code executes
}
$(".pay").one("click", triggerPayment);
$.ajax({
...
success: function(data){
if (isDeclined(data)) {
$(".pay").one("click", triggerPayment);
}
}
});
//假设您的按钮如下所示:
<!--Button 1-->
<button type='submit' class='pay pay-button'>Pay Now</button>
现在付款
//创建一个类似的按钮,例如
<!--Button 2-->
<button type='button' class='wait pay-button' style='display: none'>Pay Now</button>
$(".pay").on("click", function(e) {
$(".pay-button").hide(); //Hides the two buttons
$(".wait").show(); //Shows the dummy button
return false;
});
//The Ajax request:
var jqxhr = $.ajax("example.php")
.done(function() {
allow_click = false;
})
.fail(function() {
$(".pay-button").hide(); //Hides the two buttons
$(".pay").show(); //Shows the dummy button
console.log("error");
});
现在付款
美元(“.pay”)。点击“点击”,功能(e){
$(“.pay button”).hide();//隐藏这两个按钮
$(“.wait”).show();//显示虚拟按钮
返回false;
});
//Ajax请求:
var jqxhr=$.ajax(“example.php”)
.done(函数(){
允许单击=错误;
})
.fail(函数(){
$(“.pay button”).hide();//隐藏这两个按钮
$(“.pay”).show();//显示虚拟按钮
控制台日志(“错误”);
});
我希望这对您有用。//假设您的按钮如下:
<!--Button 1-->
<button type='submit' class='pay pay-button'>Pay Now</button>
现在付款
//创建一个类似的按钮,例如
<!--Button 2-->
<button type='button' class='wait pay-button' style='display: none'>Pay Now</button>
$(".pay").on("click", function(e) {
$(".pay-button").hide(); //Hides the two buttons
$(".wait").show(); //Shows the dummy button
return false;
});
//The Ajax request:
var jqxhr = $.ajax("example.php")
.done(function() {
allow_click = false;
})
.fail(function() {
$(".pay-button").hide(); //Hides the two buttons
$(".pay").show(); //Shows the dummy button
console.log("error");
});
现在付款
美元(“.pay”)。点击“点击”,功能(e){
$(“.pay button”).hide();//隐藏这两个按钮
$(“.wait”).show();//显示虚拟按钮
返回false;
});
//Ajax请求:
var jqxhr=$.ajax(“example.php”)
.done(函数(){
允许单击=错误;
})
.fail(函数(){
$(“.pay button”).hide();//隐藏这两个按钮
$(“.pay”).show();//显示虚拟按钮
控制台日志(“错误”);
});
我希望这对你有用。它说
jquery.one('click'…)
将与jquery.on('click',函数(e){…$(this.off(e)}
,这可能给你一个起点,它说jquery.one('click'…)
将与jquery.on('click',函数(e){…$(this.off e)}
,这可能会为您提供一个起点。如果ajax调用失败并调用error
方法,则不允许重试。如果ajax调用失败并调用error
方法,则不允许重试。如果变量可以更可靠地执行相同的操作而不必访问DOM,为什么要使用类?仅供参考:jQuery具有$。data
否,它从data属性(如果存在)获取初始值,但它从不设置它。当添加和删除类时,触发DOM会重新绘制。没有全局变量,可以轻松实现上下文,但关于多个按钮的推测已经超出了原始问题的范围。Praveen,您介意给出一个si吗示例?这似乎是正确的答案,但我没有得到逻辑。当变量可以更可靠地执行相同的操作而无需访问DOM时,为什么要使用类?仅供参考:jQuery有$。data
否,它从数据属性(如果存在)获取初始值,但从不设置它。当添加d删除类。上下文可以很容易地在没有全局变量的情况下实现,但是关于多个按钮的推测已经超出了原始问题的范围。Praveen,你介意给出一个简单的例子吗?这似乎是正确的答案,但我不明白其中的逻辑。