Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Not so simple ajax button plugin.
- */
- (function($) {
- // default setting will be merged with metadata
- var defaults = {
- method: 'get'
- };
- var data = {};
- var selector = {};
- // extend jquery scope and add callbacks
- $.extend($, {
- ajaxButton: {
- registerCallback: function(id,fn) {
- data[id] = fn;
- },
- execCallback: function(id,object,event) {
- var d = data[id];
- if(d) d.apply(object,[event]);
- },
- registerParamSelector: function(id,fn) {
- selector[id] = fn;
- },
- execParamSelector: function(id,context,event) {
- var s = selector[id];
- if(s) return s.apply(context,[event]);
- }
- }
- });
- // extend plugin scope
- $.extend($.fn, {
- ajaxButton: function(opts) {
- return this.each(function() {
- var $a = $(this).click(function(event) {
- // extract metadata
- var meta = $(this).metadata();
- if(!meta) return;
- // merge defaults with metadata, and do some error checking
- var opts = $.extend(defaults,meta);
- var href = opts.href || null;
- var param = opts.param || {};
- var paramSelector = opts.paramSelector || [];
- var callback = opts.callback || [];
- // only post/get if a href exists
- if(href) {
- // merge params with paramSelector
- $.each(paramSelector, function(i,o) {
- $.extend(param,$.ajaxButton.execParamSelector(o,$a[0],event));
- });
- // add active class
- $a.addClass('active');
- // call get/post methods
- $[opts.method.toLowerCase()](href, param, function() {
- $.each(callback, function(i,callbackId) {
- //callback.apply(this);
- $.ajaxButton.execCallback(callbackId,$a,event);
- });
- $a.removeClass('active');
- });
- }
- // cancel event
- return false;
- });
- });
- }
- });
- })(jQuery);
- /*
- * New ajaxButton methods and callbacks.
- */
- // new ajaxButton plugin call
- $("a.ajax-button").ajaxButton();
- // register ajaxButton callbacks
- $.ajaxButton.registerCallback('animateslip', function(e) {
- console.log('animateslip');
- });
- $.ajaxButton.registerCallback('shoppingcart', function(e) {
- console.log('shoppingcart');
- });
- $.ajaxButton.registerCallback('animateslip', function(e) {
- console.log('animateslip');
- });
- $.ajaxButton.registerCallback('showaddedtip', function(e) {
- console.log(this);
- console.log('showaddedtip');
- showaddedtip(this);
- });
Add Comment
Please, Sign In to add comment