// Call a native DOM method on the target with the same name name as the event.
// Can't use an .isFunction)() check here because IE6/7 fails that test.
- // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
- try {
- if ( ontype && elem[ type ] ) {
- // Don't re-trigger an onFOO event when we call its FOO() method
- old = elem[ ontype ];
-
- if ( old ) {
- elem[ ontype ] = null;
- }
+ // IE<9 dies on focus to hidden element (#1486)
+ if ( ontype && elem[ type ] && elem.offsetWidth !== 0 ) {
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
- jQuery.event.triggered = type;
- elem[ type ]();
+ if ( old ) {
+ elem[ ontype ] = null;
}
- } catch ( ieError ) {}
- if ( old ) {
- elem[ ontype ] = old;
+ jQuery.event.triggered = type;
+ elem[ type ]();
+
+ if ( old ) {
+ elem[ ontype ] = old;
+ }
}
jQuery.event.triggered = undefined;
});
+/*
+Removed because Chrome 13 snaps/crashes on this 2011-09-07
+
+test("Handler changes and .trigger() order", function() {
+ expect(1);
+
+ var markup = jQuery(
+ '<div><p><b class="a">b</b></p></div>'
+ ).appendTo( "body" );
+
+ var path = "";
+ jQuery( "b" ).parents().bind( "click", function(e){
+ path += this.nodeName.toLowerCase() + " ";
+ // Should not change the event triggering order
+ $(this).parent().remove();
+ });
+
+ markup.find( "b" ).trigger( "click" );
+
+ equals( path, "p div body html ", "Delivered all events" )
+
+ markup.remove();
+});
+*/
+
test("bind(), with data", function() {
expect(4);
var handler = function(event) {