基于一个变量SomeCondition,我需要拦截一个按钮上的点击事件,并要求确认,如果他们说好,继续,否则忽略点击。
所以这样的东西:
if(SomeCondition) {
// disable click on button
var isOk = window.confirm("Are you sure?");
if(isOk) {
$("#button1").click();
}
}
注意:button1已经通过javascript从外部.js文件通过点击事件连线,我无法更改。
我不知道点击事件是绑定的,所以如果SomeCondition是true,我必须禁用点击,然后要求确认,然后继续点击。
解决方法
进程isOK你的window.confirm内的按钮的功能
$('#button1').click(function(){
if(window.confirm("Are you sure?"))
alert('Your action here');
});
你会遇到的问题是当您触发“您确定”时已经发生点击调用preventDefault不会停止执行原始点击,如果它是启动您的原始window.confirm的。
一点鸡/鸡蛋问题。
编辑:阅读编辑后的问题:
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;
}
});