Don't pass handler function as data for events + test (#1140)
This commit is contained in:
parent
94dfccc6db
commit
11b64c1149
2 changed files with 15 additions and 10 deletions
|
@ -14,7 +14,7 @@ jQuery.event = {
|
|||
element = window;
|
||||
|
||||
// if data is passed, bind to handler
|
||||
if( data != undefined ) {
|
||||
if( data != handler ) {
|
||||
// Create temporary function pointer to original handler
|
||||
var fn = handler;
|
||||
|
||||
|
@ -55,7 +55,7 @@ jQuery.event = {
|
|||
if (element.addEventListener)
|
||||
element.addEventListener(type, element.$handle, false);
|
||||
else if (element.attachEvent)
|
||||
element.attachEvent("on" + type, element.$handle, false);
|
||||
element.attachEvent("on" + type, element.$handle);
|
||||
}
|
||||
|
||||
// Add the function to the element's handler list
|
||||
|
@ -101,7 +101,7 @@ jQuery.event = {
|
|||
if (element.removeEventListener)
|
||||
element.removeEventListener(type, element.$handle, false);
|
||||
else if (element.detachEvent)
|
||||
element.detachEvent("on" + type, element.$handle, false);
|
||||
element.detachEvent("on" + type, element.$handle);
|
||||
ret = null;
|
||||
delete events[type];
|
||||
}
|
||||
|
@ -274,7 +274,7 @@ jQuery.fn.extend({
|
|||
*/
|
||||
bind: function( type, data, fn ) {
|
||||
return this.each(function(){
|
||||
jQuery.event.add( this, type, fn || data, data );
|
||||
jQuery.event.add( this, type, fn || data, fn && data );
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -309,7 +309,7 @@ jQuery.fn.extend({
|
|||
jQuery.event.add( this, type, function(event) {
|
||||
jQuery(this).unbind(event);
|
||||
return (fn || data).apply( this, arguments);
|
||||
}, data);
|
||||
}, fn && data);
|
||||
});
|
||||
},
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue