2012-11-24 160 views
1

我想創建一個簡單的jQuery插件供我自己使用(是的,我知道已經有一個官方插件與jQuery做這種事情,但我更喜歡我的擁有)。我已經知道它基本上編碼了,唯一我不知道該怎麼做的問題是檢測哪個按鈕被點擊,並基於該調用通過插件提供的相應功能。最好的辦法是做什麼?jQuery插件火災事件/功能取決於點擊按鈕

因此,這裏是到目前爲止我的代碼:

(function($){ 
$.fn.extend({ 

    confirmDialog: function(options) { 

     var defaults = { 
      titleText: "Confirmation", 
      bodyText: "Are you sure you want to delete this?", 
      confirmButtonText: "Delete", 
      confirmAction: function(){}, 
      cancelAction: function(){}, 
     }; 

     var options = $.extend(defaults, options); 

     return this.each(function() { 

    $('<div class="confirmation-box-wrapper"><div class="confirmation-box"><div class="confirmation-title">'+options.titleText+'</div><div class="confirmation-message">'+options.bodyText+'</div><div class="options"><a class="buttons cancel">Cancel</a><a class="buttons confirmation">'+options.confirmButtonText+'</a></div></div></div>').appendTo('body'); 



     }); 
    } 
}); 
})(jQuery); 

所以我期望的使用是象是這樣的:

$(".elementToDelete").confirmDialog({ 
     confirmAction: function(){ alert("Deleted"); }, 
     cancelAction: function(){ alert("Cancelled"); } 

    }) 

回答

2

您需要綁定在該擴展的按鈕。 http://jsfiddle.net/4mjBb/

var wrapper=$('<div class="confirmation-box-wrapper"... ...')appendTo('body'); 

wrapper.find('.confirmation').on('click', function(){ 
    if (typeof options.confirmAction=='function') options.confirmAction(); 

}); 
wrapper.find('.cancel').on('click', function(){ 
    if (typeof options.cancelAction=='function') options.cancelAction(); 
}); 
+0

完美!謝謝一堆! –