The jQuery's event handling goes far beyond the simple attaching events to HTML elements and allows us to attach events to JavaScript objects. In fact, the $()
wrapper works also on objects, thus providing a quick and simple access to object's properties and methods when combined with the bind()
method. Let's see the details.
We have the following JavaScript object:
var Class = { property: 'Test', getProperty: function() { return this.property; }, setProperty: function(value) { this.property = value; } };
We can attach an event named change
to get notified when an object's property changes its value:
$(Class).bind('change', function() { if(this.property !== 'Test') { alert('Property changed'); } else { alert(this.property); } });
We can use this event with a jQuery's trigger method. Example:
$(Class).triggerHandler('change'); // 'Test' Class.setProperty('Foo'); $(Class).triggerHandler('change'); // 'Property changed'
The ideal use for this feature is the Observer Pattern.