diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2011-06-19 14:59:18 +0200 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2011-06-19 14:59:18 +0200 |
commit | 8b14b35dc72afce16b544b011a04d1e5ea1b7344 (patch) | |
tree | 9e2cb2a8a0162dc382686b68f71318527f0cfbcd | |
parent | aa7f8195f8c288dbefcb92064b68cb28064ac64c (diff) | |
download | jquery-ui-8b14b35dc72afce16b544b011a04d1e5ea1b7344.tar.gz jquery-ui-8b14b35dc72afce16b544b011a04d1e5ea1b7344.zip |
Widget delegation: Fix impl and add basisc test
-rw-r--r-- | tests/unit/widget/widget_core.js | 34 | ||||
-rw-r--r-- | ui/jquery.ui.widget.js | 2 |
2 files changed, 35 insertions, 1 deletions
diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js index bb21b74ea..c73f7284c 100644 --- a/tests/unit/widget/widget_core.js +++ b/tests/unit/widget/widget_core.js @@ -666,6 +666,40 @@ test( "._bind() to descendent", function() { .trigger( "keydown" ); }); +test( "_bind() with delegate", function() { + expect( 8 ); + $.widget( "ui.testWidget", { + _create: function() { + var that = this; + this.element = { + bind: function( event, handler ) { + equal( event, "click.testWidget" ); + ok( $.isFunction(handler) ); + }, + delegate: function( selector, event, handler ) { + equal( selector, "a" ); + equal( event, "click.testWidget" ); + ok( $.isFunction(handler) ); + }, + trigger: $.noop + } + this._bind({ + "click": "handler", + "click a": "handler", + }); + this.element.delegate = function( selector, event, handler ) { + equal( selector, "form fieldset > input" ); + equal( event, "change.testWidget" ); + ok( $.isFunction(handler) ); + }; + this._bind({ + "change form fieldset > input": "handler" + }); + } + }); + $.ui.testWidget(); +}) + test( "._hoverable()", function() { $.widget( "ui.testWidget", { _create: function() { diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index cf138f774..0e5695d97 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -319,7 +319,7 @@ $.Widget.prototype = { return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } - var match = key.match( /^(\w+)\s*(.*)$/ ); + var match = event.match( /^(\w+)\s*(.*)$/ ); var eventName = match[1] + "." + instance.widgetName, selector = match[2]; if (selector === '') { |