Trigger onclick handlers of links
authorBrandon Aaron <brandon.aaron@gmail.com>
Mon, 21 Apr 2008 20:39:17 +0000 (20:39 +0000)
committerBrandon Aaron <brandon.aaron@gmail.com>
Mon, 21 Apr 2008 20:39:17 +0000 (20:39 +0000)
src/event.js
test/unit/event.js

index 927beda..d0cacf6 100644 (file)
@@ -203,8 +203,8 @@ jQuery.event = {
                        if ( jQuery.isFunction( jQuery.data(elem, "handle") ) )
                                val = jQuery.data(elem, "handle").apply( elem, data );
 
-                       // Handle triggering native .onfoo handlers
-                       if ( !fn && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
+                       // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
+                       if ( (!fn || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
                                val = false;
 
                        // Extra functions don't get the custom event object
index ba29ab7..0ec0f59 100644 (file)
@@ -113,7 +113,7 @@ test("bind(), namespaced events, cloned events", function() {
 });
 
 test("click()", function() {
-       expect(4);
+       expect(5);
        $('<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" );
@@ -131,6 +131,13 @@ test("click()", function() {
        };
        $('#firstp').click();
        ok( counter == 1, "Check that click, triggers onclick event handler also" );
+       
+       var clickCounter = 0;
+       $('#simon1')[0].onclick = function(event) {
+               clickCounter++;
+       };
+       $('#simon1').click();
+       ok( clickCounter == 1, "Check that click, triggers onclick event handler on an a tag also" );
 });
 
 test("unbind(event)", function() {