点按即可触发付款。我正在使用.One方法禁止进一步点击,但如果付款恢复,我想重新启用点击进行另一次尝试 - 当然再次一次。如果再次出现下降,就会再次发生这种情况。
$(".pay").one("click", function(event){
...//payment code executes
});
的Ajax
$.ajax({
...
success: function(data){
$('.pay').html(data); //comes back declined. Re-enable .one click again.
}
答案 0 :(得分:2)
我想说,最好的方法是:
这就是禁用的方式。
最好使用:
.addClass();
.removeClass();
一遍又一遍地编写整个函数,复制代码。
更新:如果DOM操作更难或更昂贵,最好使用$.data(element, key, value);
方法将上下文敏感值存储为键值对,并设置执行标志。
示例强>
根据请求添加...
$(".pay").on("click", function (event) {
if ($(this).hasClass("stop"))
return false;
$(this).addClass("stop");
// Other codes to follow.
});
$.ajax({
//...
success: function (data) {
$('.pay').html(data) //comes back declined. Re-enable .one click again.
.removeClass("stop"); // remove the class that disables.
}
});
答案 1 :(得分:1)
一种方法是在ajax成功中再次定义事件
SKSpriteNode *OneDrawing = [ObjectList objectAtIndex:(int)[ObjectList count]-1];
[OneDrawing removeFromParent];
[ObjectList removeObjectAtIndex:(int)[ObjectList count]-1];
答案 2 :(得分:1)
显式委派函数而不是使用闭包。
var triggerPayment = function (evt) {
... //payment code executes
}
$(".pay").one("click", triggerPayment);
$.ajax({
...
success: function(data){
if (isDeclined(data)) {
$(".pay").one("click", triggerPayment);
}
}
});
答案 3 :(得分:0)
较新版本的JQuery $.ajax()
会返回promises,如果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) {
});
});
答案 4 :(得分:0)
//假设你有这样的按钮:
<!--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");
});
我希望这适合你。