From 96c9f0bc360ee219f5750560180fb7a55856d25e Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 1 Oct 2012 12:08:10 -1000 Subject: [PATCH] Add `$.fn.events`, which returns a list of all handled events --- spec/stdlib/jquery-extensions-spec.coffee | 18 ++++++++++++++++++ src/stdlib/jquery-extensions.coffee | 8 ++++++++ 2 files changed, 26 insertions(+) diff --git a/spec/stdlib/jquery-extensions-spec.coffee b/spec/stdlib/jquery-extensions-spec.coffee index 4a2d22d7b..05991df4c 100644 --- a/spec/stdlib/jquery-extensions-spec.coffee +++ b/spec/stdlib/jquery-extensions-spec.coffee @@ -1,4 +1,5 @@ $ = require 'jquery' +{$$} = require 'space-pen' describe 'jQuery extensions', -> describe '$.fn.preempt(eventName, handler)', -> @@ -39,3 +40,20 @@ describe 'jQuery extensions', -> element.off('.bar') element.trigger 'foo' expect(events).toEqual [2,1,3] + + describe "$.fn.events()", -> + fit "returns a list of all events being listened for on the target node or its ancestors", -> + view = $$ -> + @div id: 'a', => + @div id: 'b', => + @div id: 'c' + @div id: 'd' + + view.on 'a1', -> + view.on 'a2', -> + view.find('#b').on 'b1', -> + view.find('#b').on 'b2', -> + view.find('#c').on 'c', -> + view.find('#d').on 'd', -> + + expect(view.find('#c').events()).toEqual ['c', 'b1', 'b2', 'a1', 'a2'] \ No newline at end of file diff --git a/src/stdlib/jquery-extensions.coffee b/src/stdlib/jquery-extensions.coffee index adf11ea32..f937ba2e6 100644 --- a/src/stdlib/jquery-extensions.coffee +++ b/src/stdlib/jquery-extensions.coffee @@ -1,4 +1,5 @@ $ = require 'jquery' +_ = require 'underscore' $.fn.scrollBottom = (newValue) -> if newValue? @@ -36,3 +37,10 @@ $.fn.trueHeight = -> $.fn.trueWidth = -> this[0].getBoundingClientRect().width + +$.fn.events = -> + events = _.keys(@data('events') ? {}) + if @hasParent() + events.concat(@parent().events()) + else + events