diff options
| -rw-r--r-- | src/jqLite.js | 11 | ||||
| -rw-r--r-- | test/jqLiteSpec.js | 27 | 
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() { | 
