aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeresig <jeresig@gmail.com>2010-01-28 14:34:09 -0500
committerjeresig <jeresig@gmail.com>2010-01-28 14:34:09 -0500
commit0252b78201f817f87d10f14c85d0f37e4c50ce22 (patch)
treeeaeed5d09d86c842de5d5641cf3a2910a824b484
parent31f1e99500af6e57cfdd571272be193b4646fc09 (diff)
downloadjquery-0252b78201f817f87d10f14c85d0f37e4c50ce22.tar.gz
jquery-0252b78201f817f87d10f14c85d0f37e4c50ce22.zip
Provide a way to simulate default browser actions. Fixes #5973.
-rw-r--r--src/event.js7
-rw-r--r--test/unit/event.js7
2 files changed, 11 insertions, 3 deletions
diff --git a/src/event.js b/src/event.js
index 53ef72c0c..602332fb6 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 824707fee..b0cc5026d 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 ) {