X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=src%2Fevent.js;h=a32f0339c8d9829e7b97b4f888fa9d682e8db588;hb=a5f8a1441158b66efb76de1d15f061f87f7bdc17;hp=d2e106a6aca9b48320f4cab347805cfe0060073e;hpb=98ce35d52b17a033822f31d8a36232222d0d365e;p=jquery.git diff --git a/src/event.js b/src/event.js index d2e106a..a32f033 100644 --- a/src/event.js +++ b/src/event.js @@ -253,8 +253,10 @@ jQuery.event = { var nativeFn, nativeHandler; try { - nativeFn = elem[ type ]; - nativeHandler = elem[ "on" + type ]; + if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) { + nativeFn = elem[ type ]; + nativeHandler = elem[ "on" + type ]; + } // prevent IE from throwing an error for some elements with some event types, see #3533 } catch (e) {} @@ -264,12 +266,12 @@ jQuery.event = { if ( !bubbling && nativeFn && !event.isDefaultPrevented() && !isClick ) { this.triggered = true; try { - nativeFn(); + elem[ type ](); // prevent IE from throwing an error for some hidden elements } catch (e) {} // Handle triggering native .onfoo handlers - } else if ( nativeHandler && nativeHandler.apply( elem, data ) === false ) { + } else if ( nativeHandler && elem[ "on" + type ].apply( elem, data ) === false ) { event.result = false; } @@ -872,9 +874,7 @@ function liveHandler( event ) { } function liveConvert( type, selector ) { - return ["live", type, selector//.replace(/[^\w\s\.]/g, function(ch){ return "\\"+ch}) - .replace(/\./g, "`") - .replace(/ /g, "|")].join("."); + return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "&")].join("."); } jQuery.each( ("blur focus load resize scroll unload click dblclick " + @@ -885,6 +885,10 @@ jQuery.each( ("blur focus load resize scroll unload click dblclick " + jQuery.fn[ name ] = function( fn ) { return fn ? this.bind( name, fn ) : this.trigger( name ); }; + + if ( jQuery.fnAttr ) { + jQuery.fnAttr[ name ] = true; + } }); // Prevent memory leaks in IE @@ -896,7 +900,10 @@ jQuery( window ).bind( 'unload', function() { for ( var id in jQuery.cache ) { // Skip the window if ( id != 1 && jQuery.cache[ id ].handle ) { - jQuery.event.remove( jQuery.cache[ id ].handle.elem ); + // Try/Catch is to handle iframes being unloaded, see #4280 + try { + jQuery.event.remove( jQuery.cache[ id ].handle.elem ); + } catch(e) {} } } });