aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDave Methvin <dave.methvin@gmail.com>2010-12-23 16:21:14 -0500
committerDave Methvin <dave.methvin@gmail.com>2010-12-23 19:59:23 -0500
commit0b6afcedd22aaffb96d3d45b9b220a16229e2f7c (patch)
tree2f770ec8ff33d949d87ec825ea63d973dfcd500e /test
parent1f92edee207829a28de80ee72548cdbd599bcc79 (diff)
downloadjquery-0b6afcedd22aaffb96d3d45b9b220a16229e2f7c.tar.gz
jquery-0b6afcedd22aaffb96d3d45b9b220a16229e2f7c.zip
When a native browser event is bubbling up the DOM, make sure that the correct isDefaultPrevented value is reflected by jQuery's Event object. Fixes #7793.
Diffstat (limited to 'test')
-rw-r--r--test/unit/event.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/unit/event.js b/test/unit/event.js
index a647e5f3b..d0183f89d 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -295,6 +295,44 @@ test("live/delegate immediate propagation", function() {
$p.undelegate( "click" );
});
+test("bind/delegate bubbling, isDefaultPrevented", function() {
+ expect(2);
+ var $anchor2 = jQuery( "#anchor2" ),
+ $main = jQuery( "#main" ),
+ fakeClick = function($jq) {
+ // Prefer a native click so we don't get jQuery simulated bubbling
+ if ( $jq[0].click ) {
+ $jq[0].click(); // IE
+ }
+ else if ( document.createEvent ) {
+ var e = document.createEvent( 'MouseEvents' );
+ e.initEvent( "click", true, true );
+ $jq[0].dispatchEvent(e);
+ }
+ else {
+ $jq.click();
+ }
+ };
+ $anchor2.click(function(e) {
+ e.preventDefault();
+ });
+ $main.delegate("#foo", "click", function(e) {
+ equals( e.isDefaultPrevented(), true, "isDefaultPrevented true passed to bubbled event" );
+ });
+ fakeClick( $anchor2 );
+ $anchor2.unbind( "click" );
+ $main.undelegate( "click" );
+ $anchor2.click(function(e) {
+ // Let the default action occur
+ });
+ $main.delegate("#foo", "click", function(e) {
+ equals( e.isDefaultPrevented(), false, "isDefaultPrevented false passed to bubbled event" );
+ });
+ fakeClick( $anchor2 );
+ $anchor2.unbind( "click" );
+ $main.undelegate( "click" );
+});
+
test("bind(), iframes", function() {
// events don't work with iframes, see #939 - this test fails in IE because of contentDocument
var doc = jQuery("#loadediframe").contents();