默认操作不会在新通话中重置
我在JavaScript中有一些防止默认的问题,特别是jQuery。 我试图让一个模式框显示带有“.confirm”类的元素,这些元素有效地覆盖默认动作,以确认他们在继续执行之前执行该动作之前,确认与用户确认做。
$('.confirm').on('click', function(event, options)
{
options = options || {};
if (!options.confirmed)
{
vex.dialog.confirm({
message: 'Are you sure that you want to perform this action?',
callback: function(response) {
if (response === true) {
$(event.target).trigger('click', {confirmed: response});
}
}
});
event.preventDefault();
}
});
流
问题
但事实并非如此,因为默认行为似乎无视未来发生的呼叫。
尝试
笔记
任何帮助都会很棒,因为它暂时让我难住
尝试使用$('.confirm').off()
在您的回调中删除点击处理程序。 这样,当你以编程方式触发点击,你的点击处理程序被调用。
在API调用之前放置event.preventDefault,这应该工作我猜。
$('.confirm').on('click', function(event, options)
{
options = options || {};
if (!options.confirmed)
{
event.preventDefault();
vex.dialog.confirm({
message: 'Are you sure that you want to perform this action?',
callback: function(response) {
if (response === true) {
$(event.target).trigger('click', {confirmed: response});
}
}
});
}
});
编辑:
如你所说,我认为这是没有绑定/重新绑定的唯一方法。
$('.confirm').on('click', function(event, options)
{
options = options || {};
if (!options.confirmed)
{
event.preventDefault();
vex.dialog.confirm({
message: 'Are you sure that you want to perform this action?',
callback: function(response) {
if (response === true) {
$(event.target).trigger('click', {confirmed: response});
}
}
});
}
else {
window.location = $(this).attr("href");
}
});
链接地址: http://www.djcxy.com/p/71707.html