mirror of
https://github.com/silverstripe/doc.silverstripe.org
synced 2024-10-22 17:05:50 +02:00
31 lines
798 B
JavaScript
31 lines
798 B
JavaScript
|
(function($) {
|
||
|
$.fn.fn = function() {
|
||
|
var self = this;
|
||
|
var extension = arguments[0], name = arguments[0];
|
||
|
if (typeof name == "string") {
|
||
|
return apply(self, name, $.makeArray(arguments).slice(1, arguments.length));
|
||
|
} else {
|
||
|
$.each(extension, function(key, value) {
|
||
|
define(self, key, value);
|
||
|
});
|
||
|
return self;
|
||
|
}
|
||
|
}
|
||
|
function define(self, name, fn) {
|
||
|
self.data(namespacedName(name), fn);
|
||
|
};
|
||
|
function apply(self, name, args) {
|
||
|
var result;
|
||
|
self.each(function(i, item) {
|
||
|
var fn = $(item).data(namespacedName(name));
|
||
|
if (fn)
|
||
|
result = fn.apply(item, args);
|
||
|
else
|
||
|
throw(name + " is not defined");
|
||
|
});
|
||
|
return result;
|
||
|
};
|
||
|
function namespacedName(name) {
|
||
|
return 'fn.' + name;
|
||
|
}
|
||
|
})(jQuery);
|