From 0252b78201f817f87d10f14c85d0f37e4c50ce22 Mon Sep 17 00:00:00 2001
From: jeresig <jeresig@gmail.com>
Date: Thu, 28 Jan 2010 14:34:09 -0500
Subject: [PATCH] Provide a way to simulate default browser actions. Fixes
 #5973.

---
 src/event.js       |    7 +++++--
 test/unit/event.js |    7 ++++++-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/event.js b/src/event.js
index 53ef72c..602332f 100644
--- a/src/event.js
+++ b/src/event.js
@@ -333,9 +333,12 @@ jQuery.event = {
 
 		} else if ( !event.isDefaultPrevented() ) {
 			var target = event.target, old,
-				isClick = jQuery.nodeName(target, "a") && type === "click";
+				isClick = jQuery.nodeName(target, "a") && type === "click",
+				special = jQuery.event.special[ type ] || {};
+
+			if ( (!special._default || special._default.call( elem, event ) === false) && 
+				!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
 
-			if ( !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
 				try {
 					if ( target[ type ] ) {
 						// Make sure that we don't accidentally re-trigger the onFOO events
diff --git a/test/unit/event.js b/test/unit/event.js
index 824707f..b0cc502 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -72,7 +72,7 @@ test("bind(), multiple events at once and namespaces", function() {
 });
 
 test("bind(), namespace with special add", function() {
-	expect(9);
+	expect(18);
 
 	var div = jQuery("<div/>").bind("test", function(e) {
 		ok( true, "Test event fired." );
@@ -81,6 +81,11 @@ test("bind(), namespace with special add", function() {
 	var i = 0;
 
 	jQuery.event.special.test = {
+		_default: function(e) {
+			equals( this, document, "Make sure we're at the top of the chain." );
+			equals( e.type, "test", "And that we're still dealing with a test event." );
+			equals( e.target, div[0], "And that the target is correct." );
+		},
 		setup: function(){},
 		teardown: function(){},
 		add: function( handler, data, namespaces ) {
-- 
1.7.10.4