aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jqLite.js11
-rw-r--r--test/jqLiteSpec.js27
2 files changed, 37 insertions, 1 deletions
diff --git a/src/jqLite.js b/src/jqLite.js
index 1ba270b6..90a363f3 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -54,6 +54,7 @@
* - [replaceWith()](http://api.jquery.com/replaceWith/)
* - [text()](http://api.jquery.com/text/)
* - [toggleClass()](http://api.jquery.com/toggleClass/)
+ * - [triggerHandler()](http://api.jquery.com/triggerHandler/) - Doesn't pass native event objects to handlers.
* - [unbind()](http://api.jquery.com/unbind/)
* - [val()](http://api.jquery.com/val/)
* - [wrap()](http://api.jquery.com/wrap/)
@@ -728,7 +729,15 @@ forEach({
return element.getElementsByTagName(selector);
},
- clone: JQLiteClone
+ clone: JQLiteClone,
+
+ triggerHandler: function(element, eventName) {
+ var eventFns = (JQLiteExpandoStore(element, 'events') || {})[eventName];
+
+ forEach(eventFns, function(fn) {
+ fn.call(element, null);
+ });
+ }
}, function(fn, name){
/**
* chaining functions
diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js
index 1a56a343..76a2c5a8 100644
--- a/test/jqLiteSpec.js
+++ b/test/jqLiteSpec.js
@@ -1091,6 +1091,33 @@ describe('jqLite', function() {
});
+ describe('triggerHandler', function() {
+ it('should trigger all registered handlers for an event', function() {
+ var element = jqLite('<span>poke</span>'),
+ pokeSpy = jasmine.createSpy('poke'),
+ clickSpy1 = jasmine.createSpy('clickSpy1'),
+ clickSpy2 = jasmine.createSpy('clickSpy2');
+
+ element.bind('poke', pokeSpy);
+ element.bind('click', clickSpy1);
+ element.bind('click', clickSpy2);
+
+ expect(pokeSpy).not.toHaveBeenCalled();
+ expect(clickSpy1).not.toHaveBeenCalled();
+ expect(clickSpy2).not.toHaveBeenCalled();
+
+ element.triggerHandler('poke');
+ expect(pokeSpy).toHaveBeenCalledOnce();
+ expect(clickSpy1).not.toHaveBeenCalled();
+ expect(clickSpy2).not.toHaveBeenCalled();
+
+ element.triggerHandler('click');
+ expect(clickSpy1).toHaveBeenCalledOnce();
+ expect(clickSpy2).toHaveBeenCalledOnce();
+ });
+ });
+
+
describe('camelCase', function() {
it('should leave non-dashed strings alone', function() {