基于一个变量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; } });