trigger DOM0 event handlers when doing a trigger (#1363)
authorBrandon Aaron <brandon.aaron@gmail.com>
Sat, 21 Jul 2007 01:04:59 +0000 (01:04 +0000)
committerBrandon Aaron <brandon.aaron@gmail.com>
Sat, 21 Jul 2007 01:04:59 +0000 (01:04 +0000)
src/event/event.js
src/event/eventTest.js

index f264a2c..b13e5a0 100644 (file)
@@ -148,11 +148,15 @@ jQuery.event = {
                        data.unshift( this.fix({ type: type, target: element }) );
 
                        // Trigger the event
-                       if ( jQuery.isFunction(element.$handle) && (val = element.$handle.apply( element, data )) !== false )
-                               this.triggered = true;
+                       if ( jQuery.isFunction( element.$handle ) )
+                               val = element.$handle.apply( element, data );
+                       if ( !fn && element["on"+type] && element["on"+type].apply( element, data ) === false )
+                               val = false;
 
-                       if ( fn && val !== false && !jQuery.nodeName(element, 'a') )
+                       if ( fn && val !== false && !jQuery.nodeName(element, 'a') ) {
+                               this.triggered = true;
                                element[ type ]();
+                       }
 
                        this.triggered = false;
                }
index d913b56..7ac3a6e 100644 (file)
@@ -48,7 +48,7 @@ test("bind()", function() {
 });
 
 test("click()", function() {
-       expect(3);
+       expect(4);
        $('<li><a href="#">Change location</a></li>').prependTo('#firstUL').find('a').bind('click', function() {
            var close = $('spanx', this); // same with $(this).find('span');
            ok( close.length == 0, "Context element does not exist, length must be zero" );
@@ -59,6 +59,13 @@ test("click()", function() {
        $("#check1").click(function() {
                ok( true, "click event handler for checkbox gets fired twice, see #815" );
        }).click();
+       
+       var counter = 0;
+       $('#firstp')[0].onclick = function(event) {
+               counter++;
+       };
+       $('#firstp').click();
+       ok( counter == 1, "Check that click, triggers onclick event handler also" );
 });
 
 test("unbind(event)", function() {