Ive been using Twitters Bootstrap for putting together a web UI for our UAV design system (that will be partially opened up to the general public at some point). jQuery also plays a role in this and at some point I needed an easy confirmation dialog. I could easily have used jQueryUI as I have in the past, but I found this great plugin by Damian Antipa that does exactly what I needed & uses just jQuery and Bootstrap.
The only thing I needed to change was that I wanted the confirmation dialog (on ok) to trigger the original click() handle instead of redirecting to a different URL. My basic patch is:
@@ -52,6 +52,17 @@
var o = options;
var $elem = $(this)
+ //is there an existing click handler registered
+ if ($elem.data('events') && $elem.data('events').click) {
+ //save the handler (TODO: assumes only one)
+ var targetClickFun = $elem.data('events').click[0].handler;
+ //unbind it to prevent it firing
+ $elem.unbind('click');
+ }else{
+ //assume there is a href attribute to redirect to
+ var targetClickFun = function() {window.location.href = $elem.attr('href');};
+ }
+
$elem.bind('click', function(e) {
e.preventDefault();
if(!$('#confirm-dialog').length) {
@@ -89,7 +100,8 @@
$dialog.find('p.message').html(o.message);
$dialog.find('a.btn:eq(0)').text($elem.text()).bind('click', function(e) {
- window.location.href = $elem.attr('href');
+ $dialog.remove();
+ targetClickFun();
});
$dialog.find('a.btn:eq(1)').text(o.cancelButton).bind('click', function(e) {
Cleaner would be to add some options and what have you. And maybe I will come to that. For now I put the full code in a public gist on github. So fork ahead
–Dirk
