结合两个函数来检查是否为真,然后继续
combining two functions to check if true then continue
我有两个触发器,一个从confirm
返回boolean
,另一个发送ajax request
。
我注意到,简单地使用这些函数,即使您单击取消,ajax仍然遵循。我的问题是,confirm trigger
是广泛的,是由一个以上的触发器用于不同的事情。那么我该如何检查confirm是否返回false呢?
下面是一个例子:
这是我的代码检查,看看是否确认链接被点击
$('div.answers').on('click', '.confirm', function() {
return confirm('Are you sure?');
});
这是做ajax的事情的代码,但也有confirm
类:
$('div.answers').on('click', '.trg-delete', function() {
var that = $(this);
var itemid = that.data("id");
$.ajax({
type: "POST",
url: "./delete-answer.php",
data: { itemID: itemid }
})
.done(function(data) {
if(data == 1) {
that
.css("color", "#27AE60")
.html('<i class="fa fa-fw fa-check"></i>');
} else {
that
.css("color", "#C0392B")
.html('<i class="fa fa-fw fa-close"></i>');
};
window.setTimeout(function() {
that
.css("color", "")
.html('<i class="fa fa-fw fa-close"></i>');
}, 5000);
})
.fail(function(data) {
that
.css("color", "#C0392B")
.html('<i class="fa fa-fw fa-close"></i>');
window.setTimeout(function() {
that
.css("color", "")
.html('<i class="fa fa-fw fa-close"></i>');
}, 5000);
});
});
正如你所看到的,这两个是完全分开的,因为我也有触发器,如trg-open
, trg-closed
, trg-choice
,它们都做完全不同的事情,但也有confirm
类。
最简单的编辑方法是什么,在这个例子中,trg-delete
点击检查confirm
点击是否返回true
或false
?
注意:我确实看到了这一点,但它是不同的,因为我使用 on('click')
s,他有功能。
为什么要构建两个独立的事件?
为什么不只在.trg-delete
上(注意第二行):
$('div.answers').on('click', '.trg-delete', function() {
if( confirm( "Are you sure?" ) ) {
var that = $(this);
var itemid = that.data("id");
$.ajax({
type: "POST",
url: "./delete-answer.php",
data: { itemID: itemid }
})
.done(function(data) {
if(data == 1) {
that
.css("color", "#27AE60")
.html('<i class="fa fa-fw fa-check"></i>');
} else {
that
.css("color", "#C0392B")
.html('<i class="fa fa-fw fa-close"></i>');
};
window.setTimeout(function() {
that
.css("color", "")
.html('<i class="fa fa-fw fa-close"></i>');
}, 5000);
})
.fail(function(data) {
that
.css("color", "#C0392B")
.html('<i class="fa fa-fw fa-close"></i>');
window.setTimeout(function() {
that
.css("color", "")
.html('<i class="fa fa-fw fa-close"></i>');
}, 5000);
});
}
});
从第一个点击处理程序返回一个"confirmed"布尔值不会对第二个点击处理程序产生任何影响。这两个动作将保持独立。
但是,您可以通过抑制第二个单击操作并有条件地从第一个单击操作触发它来实现所需的操作。
幸运的是,jQuery允许自定义事件,这在这种情况下非常有用。
$('div.answers').on('click', '.confirm', function() {
if( confirm('Are you sure?') ) {
$(this).trigger('confirmed');
}
});
// Now specify a custom `confirmed` handler
$('div.answers').on('confirmed', '.trg-delete', function() {
var that = $(this);
var itemid = that.data("id");
$.ajax({
type: "POST",
url: "./delete-answer.php",
data: { itemID: itemid }
})
// etc.
});
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 检查CSV标头是否匹配,如果匹配则继续分析,否则停止
- 是否可以间隔暂停视频,并请求验证码以继续播放
- 如何在继续函数之前检查元素长度是否已更改 - Javascript
- 是否可以防止引导轮播在鼠标悬停时暂停并继续自动循环
- 重定向后是否可以继续运行 JavaScript 代码
- 使用节点时是否有等效的语句“继续”.js 为每个系列异步
- 继续检查条件是否成立
- 是否可以编写一个跳过一个或多个字符并继续匹配的正则表达式?
- 是否有可能在某个点停止执行代码并请求确认,然后继续
- 即使设置了“Cache-Control: max-age”,浏览器是否继续发送资源请求?
- 函数在继续之前是否等待被调用的函数完成
- 结合两个函数来检查是否为真,然后继续
- SignalR集线器是否有明确的版本控制策略,以便旧的JS代码可以继续工作
- 在javascript中,是否有内置的错误代码?有可能捕获内部错误吗?可以继续
- 即使在用户通过javascript导航离开后,ASP.NET是否仍能继续可靠地处理请求
- 即使在关闭页面后,脚本是否仍会继续运行