Guest User

Untitled

a guest
Apr 24th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. /*
  2. * Not so simple ajax button plugin.
  3. */
  4. (function($) {
  5. // default setting will be merged with metadata
  6. var defaults = {
  7. method: 'get'
  8. };
  9. var data = {};
  10. var selector = {};
  11. // extend jquery scope and add callbacks
  12. $.extend($, {
  13. ajaxButton: {
  14. registerCallback: function(id,fn) {
  15. data[id] = fn;
  16. },
  17. execCallback: function(id,object,event) {
  18. var d = data[id];
  19. if(d) d.apply(object,[event]);
  20. },
  21. registerParamSelector: function(id,fn) {
  22. selector[id] = fn;
  23. },
  24. execParamSelector: function(id,context,event) {
  25. var s = selector[id];
  26. if(s) return s.apply(context,[event]);
  27. }
  28. }
  29. });
  30. // extend plugin scope
  31. $.extend($.fn, {
  32. ajaxButton: function(opts) {
  33. return this.each(function() {
  34. var $a = $(this).click(function(event) {
  35.  
  36. // extract metadata
  37. var meta = $(this).metadata();
  38. if(!meta) return;
  39. // merge defaults with metadata, and do some error checking
  40. var opts = $.extend(defaults,meta);
  41. var href = opts.href || null;
  42. var param = opts.param || {};
  43. var paramSelector = opts.paramSelector || [];
  44. var callback = opts.callback || [];
  45. // only post/get if a href exists
  46. if(href) {
  47. // merge params with paramSelector
  48. $.each(paramSelector, function(i,o) {
  49. $.extend(param,$.ajaxButton.execParamSelector(o,$a[0],event));
  50. });
  51. // add active class
  52. $a.addClass('active');
  53. // call get/post methods
  54. $[opts.method.toLowerCase()](href, param, function() {
  55. $.each(callback, function(i,callbackId) {
  56. //callback.apply(this);
  57. $.ajaxButton.execCallback(callbackId,$a,event);
  58. });
  59. $a.removeClass('active');
  60. });
  61. }
  62. // cancel event
  63. return false;
  64. });
  65. });
  66. }
  67. });
  68. })(jQuery);
  69. /*
  70. * New ajaxButton methods and callbacks.
  71. */
  72. // new ajaxButton plugin call
  73. $("a.ajax-button").ajaxButton();
  74.  
  75. // register ajaxButton callbacks
  76. $.ajaxButton.registerCallback('animateslip', function(e) {
  77. console.log('animateslip');
  78. });
  79.  
  80. $.ajaxButton.registerCallback('shoppingcart', function(e) {
  81. console.log('shoppingcart');
  82. });
  83. $.ajaxButton.registerCallback('animateslip', function(e) {
  84. console.log('animateslip');
  85. });
  86. $.ajaxButton.registerCallback('showaddedtip', function(e) {
  87. console.log(this);
  88. console.log('showaddedtip');
  89. showaddedtip(this);
  90.  
  91. });
Add Comment
Please, Sign In to add comment