基于变量SomeCondition
,我需要拦截按钮上的点击事件,并要求确认,如果他们说好,继续,否则忽略点击。
类似于:
if(SomeCondition) {
// disable click on button
var isOk = window.confirm("Are you sure?");
if(isOk) {
$("#button1").click();
}
}
注意:button1已经通过外部.js文件中的javascript点击事件与我无法更改。
我也不知道点击事件是什么绑定的,所以如果SomeCondition为真,我必须禁用点击,然后要求确认,然后继续点击。
答案 0 :(得分:40)
处理isOK你的window.confirm在按钮的功能
$('#button1').click(function(){
if(window.confirm("Are you sure?"))
alert('Your action here');
});
您将遇到的问题是,当您触发“您确定无误”时,已经发生了点击。如果启动原始窗口,则会阻止执行原始点击。确认。
有点鸡/蛋的问题。
编辑:阅读您编辑过的问题后:
var myClick = null;
//get a list of jQuery handlers bound to the click event
var jQueryHandlers = $('#button1').data('events').click;
//grab the first jquery function bound to this event
$.each(jQueryHandlers,function(i,f) {
myClick = f.handler;
return false;
});
//unbind the original
$('#button1').unbind('click');
//bind the modified one
$('#button1').click(function(){
if(window.confirm("Are You Sure?")){
myClick();
} else {
return false;
}
});
答案 1 :(得分:2)
使用jQuery防止默认,你只需return false
:
$("#button1").click(function () {
//do your thing
return false;
});
答案 2 :(得分:2)
任何正在寻找简单解决方案的人(不是特别针对这里提到的特殊情况)
只需将此属性添加到按钮:
UIUserNotificationSettings
当确认框返回false时,点击事件将被取消。 注意:明确提到内联的onclick处理程序将覆盖任何其他绑定。
答案 3 :(得分:0)
我无法使用jquery 1.9.1
获得上述任何答案这适用于之前设置的click
事件
var elem = $('#button1');
var oldClick = $._data(elem[0], 'events').click[0].handler;
elem.off('click');
// Pass the original event object.
elem.click(function(e){
if(window.confirm("Are You Sure?")){
oldClick(e);
} else {
return false;
}
});
与Jason Benson的回答非常相似