diff --git a/eventually.jquery.json b/eventually.jquery.json
index 86f078d..b34aa42 100755
--- a/eventually.jquery.json
+++ b/eventually.jquery.json
@@ -7,7 +7,7 @@
"events",
"pub-sub"
],
- "version": "1.0.2",
+ "version": "1.0.6",
"author": {
"name": "Eric Lien",
"email": "liener.meat@gmail.com"
diff --git a/jquery.eventually.js b/jquery.eventually.js
index 71108a9..7ac064f 100755
--- a/jquery.eventually.js
+++ b/jquery.eventually.js
@@ -1,14 +1,25 @@
(function($) {
- var methods = {
- init : function(){
- return;
- },
- before : before,
- on : on,
- after : after,
- trigger : trigger,
- };
+ function Eventually(jquery, config){
+ //version information
+ this.version = "1.0.6";
+ //name of $.fn. (for own use, and also for $.fn.)
+ this.plugin_name = "eventually";
+ //instance of jquery passed to $.fn.
+ this.jquery = jquery;
+ //config passed to $.fn.
+ this.config = config;
+
+ //register/alias methods $.fn. is allowed to access (init is a given!)
+ this.public_methods = {
+ 'on': this.on,
+ 'before': this.before,
+ 'after': this.after,
+ 'trigger': this.trigger,
+ };
+ }
+
+ Eventually.prototype.init = function(){ return this.jquery; }
/**
* Private function which actually registers events and a callback to eventually
@@ -18,12 +29,14 @@
* @param object data Data to bind pass to event
* @param function handler Function to handle the event
*/
- function registerEvent(jqselections, orig_event, event, data, handler){
- var data = data || {};
+ Eventually.prototype.registerEvent = function(orig_event, event, data, handler){
+ var data = data || {};
var handler = handler || function(data){ return; };
//loop over selections, binding handler to event
- jqselections.each(
+ this.jquery.each(
function(){
+ //NOTE!: 'this' refers to a particular dom element in this scope!
+
//bind handler on our event
$(this).on(event, data, handler);
@@ -31,9 +44,9 @@
//on this dom element
if(!this.eventually_listeners){
this.eventually_listeners = {};
- }if(!this.eventually_listeners[event]){
+ }if(!this.eventually_listeners[orig_event]){
//no eventually listener for this event and element yet,
- this.eventually_listeners[event] = true;
+ this.eventually_listeners[orig_event] = true;
//create one
$(this).on(orig_event, function(e){
$(this).eventually('trigger', orig_event, e);
@@ -46,10 +59,11 @@
/**
* Creates and runs jQuery events on selections
*/
- function triggerEvent(jqselections, eventname, eventObj){
+ Eventually.prototype.triggerEvent = function(eventname, eventObj){
var e = jQuery.Event(eventname);
e.original_event = eventObj;
- jqselections.trigger(e);
+ //running jquerys trigger method on selections!
+ this.jquery.trigger(e);
return e;
}
@@ -59,8 +73,9 @@
* @param object data Data that will be available under event.data property in listener.
* @param function handler Function to call when event is triggered that will handle the event
*/
- function before(event, data, handler) {
- registerEvent(this, event, 'befor'+event, data, handler);
+ Eventually.prototype.before = function(event, data, handler) {
+ this.registerEvent(event, 'before_'+event, data, handler);
+ return this.jquery;
}
/**
@@ -69,8 +84,9 @@
* @param object data Data that will be available under event.data property in listener.
* @param function handler Function to call when event is triggered that will handle the event
*/
- function on(event, data, handler) {
- registerEvent(this, event, 'on_'+event, data, handler);
+ Eventually.prototype.on = function(event, data, handler) {
+ this.registerEvent(event, 'on_'+event, data, handler);
+ return this.jquery;
}
/**
@@ -79,8 +95,9 @@
* @param object data Data that will be available under event.data property in listener.
* @param function handler Function to call when event is triggered that will handle the event
*/
- function after(event, data, handler) {
- registerEvent(this, event, 'after_'+event, data, handler);
+ Eventually.prototype.after = function(event, data, handler) {
+ this.registerEvent(event, 'after_'+event, data, handler);
+ return this.jquery;
}
/**
@@ -91,16 +108,16 @@
* @return bool True if all before and on listeners fired and didn't stop propagation, false otherwise.
* This will cause events to stop propagating on actual dom events!
*/
- function trigger(event, eventObj){
+ Eventually.prototype.trigger = function(event, eventObj){
var eventObj = eventObj || {};
//create befor and run it
- var bevent = triggerEvent(this, 'befor'+event, eventObj);
- //if befor was not killed, create and run the on_
+ var bevent = this.triggerEvent('before_'+event, eventObj);
+ //if before_ was not killed, create and run the on_
if(!bevent.isDefaultPrevented() && !bevent.isPropagationStopped() && !bevent.isImmediatePropagationStopped()){
- var oevent = triggerEvent(this, 'on_'+event, eventObj);
+ var oevent = this.triggerEvent('on_'+event, eventObj);
//if on_ was not killed, create and run the after_
if(!oevent.isDefaultPrevented() && !oevent.isPropagationStopped() && !oevent.isImmediatePropagationStopped()){
- var aevent = triggerEvent(this, 'after_'+event, eventObj);
+ var aevent = this.triggerEvent('after_'+event, eventObj);
return true;
}
}
@@ -112,19 +129,21 @@
eventObj.preventDefault();
}
//return false. This trigger did not complete cleanly.
- return false;
+ return false;
}
- $.fn.eventually = function(methodOrOptions) {
- this.version = '1.0.2';
+ $.fn.eventually = function(methodOrOptions){
+ //Instantiate plugin object with instance of jquery as argument, so it has it, and any config options it might need
+ var obj = new Eventually(this, methodOrOptions);
- if ( methods[methodOrOptions] ) {
- return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
+ //run public methods or init, or report error (Please never touch any of this! It shouldn't need to change!)
+ if( obj.public_methods[ methodOrOptions ] ){
+ return obj.public_methods[ methodOrOptions ].apply( obj, Array.prototype.slice.call( arguments, 1 ));
}else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ){
// Default to "init"
- return methods.init.apply( this, arguments );
+ return obj.init.apply( obj, arguments );
}else{
- $.error( 'Method ' + method + ' does not exist on jQuery.eventually' );
+ $.error( 'Method ' + methodOrOptions + ' does not exist on '+obj.plugin_name );
}
- }
+ }
}(jQuery));
\ No newline at end of file
diff --git a/package.json b/package.json
index 0741d93..51b1ad9 100755
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "jquery-eventually",
"title": "jQuery Event Library ",
"description": "Extends the jquery event system to make before and after events automatic and simple",
- "version": "1.0.2",
+ "version": "1.0.6",
"homepage": "https://github.com/lienmeat/jquery-eventually",
"author": {
"name": "Eric Lien",
diff --git a/test/index.html b/test/index.html
index b58afea..15e5c32 100755
--- a/test/index.html
+++ b/test/index.html
@@ -10,7 +10,7 @@