Widget: Use this.widget() for event delegation.

This commit is contained in:
Scott González
2011-08-12 22:10:31 -04:00
parent 1729e3a32e
commit 4587f2de68
2 changed files with 20 additions and 12 deletions

View File

@@ -673,23 +673,31 @@ test( "_bind() with delegate", function() {
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) );
ok( $.isFunction(handler) );
},
trigger: $.noop
};
this.widget = function() {
return {
delegate: function( selector, event, handler ) {
equal( selector, "a" );
equal( event, "click.testWidget" );
ok( $.isFunction(handler) );
}
};
};
this._bind({
"click": "handler",
"click a": "handler",
"click a": "handler"
});
this.element.delegate = function( selector, event, handler ) {
equal( selector, "form fieldset > input" );
equal( event, "change.testWidget" );
ok( $.isFunction(handler) );
this.widget = function() {
return {
delegate: function( selector, event, handler ) {
equal( selector, "form fieldset > input" );
equal( event, "change.testWidget" );
ok( $.isFunction(handler) );
}
};
};
this._bind({
"change form fieldset > input": "handler"

View File

@@ -326,7 +326,7 @@ $.Widget.prototype = {
eventName = match[1] + "." + instance.widgetName,
selector = match[2];
if ( selector ) {
element.delegate( selector, eventName, handlerProxy );
instance.widget().delegate( selector, eventName, handlerProxy );
} else {
element.bind( eventName, handlerProxy );
}