Changeset 4001
- Timestamp:
- 12/03/07 21:41:10 (9 months ago)
- Location:
- trunk/jquery
- Files:
-
- 2 modified
-
src/event.js (modified) (1 diff)
-
test/unit/event.js (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/jquery/src/event.js
r3970 r4001 172 172 173 173 // Handle triggering of extra function 174 if ( extra && extra.apply( element, data ) === false ) 175 val = false; 174 if ( extra ) { 175 // call the extra function and tack the current return value on the end for possible inspection 176 var ret = extra.apply( element, data.concat( val ) ); 177 // if anything is returned, give it precedence and have it overwrite the previous value 178 if (ret !== undefined) 179 val = ret; 180 } 176 181 177 182 // Trigger the native events (except for clicks on links) -
trunk/jquery/test/unit/event.js
r3970 r4001 32 32 // 33 33 // doc.body.innerHTML = "<input type='text'/>"; 34 // 34 // 35 35 // var input = doc.getElementsByTagName("input")[0]; 36 // 36 // 37 37 // $(input).bind("click",function() { 38 38 // ok( true, "Binding to element inside iframe" ); … … 49 49 reset(); 50 50 51 $("#firstp").bind("click",function(e){51 $("#firstp").bind("click",function(e){ 52 52 ok(true, "Normal click triggered"); 53 });54 55 $("#firstp").bind("click.test",function(e){53 }); 54 55 $("#firstp").bind("click.test",function(e){ 56 56 ok(true, "Namespaced click triggered"); 57 });57 }); 58 58 59 59 // Trigger both bound fn (2) 60 $("#firstp").trigger("click");60 $("#firstp").trigger("click"); 61 61 62 62 // Trigger one bound fn (1) 63 $("#firstp").trigger("click.test");63 $("#firstp").trigger("click.test"); 64 64 65 65 // Remove only the one fn 66 $("#firstp").unbind("click.test");66 $("#firstp").unbind("click.test"); 67 67 68 68 // Trigger the remaining fn (1) 69 $("#firstp").trigger("click");69 $("#firstp").trigger("click"); 70 70 }); 71 71 … … 73 73 expect(4); 74 74 $('<li><a href="#">Change location</a></li>').prependTo('#firstUL').find('a').bind('click', function() { 75 var close = $('spanx', this); // same with $(this).find('span');76 ok( close.length == 0, "Context element does not exist, length must be zero" );77 ok( !close[0], "Context element does not exist, direct access to element must return undefined" );78 return false;75 var close = $('spanx', this); // same with $(this).find('span'); 76 ok( close.length == 0, "Context element does not exist, length must be zero" ); 77 ok( !close[0], "Context element does not exist, direct access to element must return undefined" ); 78 return false; 79 79 }).click(); 80 80 … … 117 117 118 118 test("trigger(event, [data], [fn])", function() { 119 expect( 40);119 expect(66); 120 120 121 121 var handler = function(event, a, b, c) { … … 131 131 equals( b, "2", "check passed data" ); 132 132 equals( c, "abc", "check passed data" ); 133 return "test2"; 133 return false; 134 }; 135 136 var handler3 = function(a, b, c, v) { 137 equals( a, 1, "check passed data" ); 138 equals( b, "2", "check passed data" ); 139 equals( c, "abc", "check passed data" ); 140 equals( v, "test", "check current value" ); 141 return "newVal"; 142 }; 143 144 var handler4 = function(a, b, c, v) { 145 equals( a, 1, "check passed data" ); 146 equals( b, "2", "check passed data" ); 147 equals( c, "abc", "check passed data" ); 148 equals( v, "test", "check current value" ); 134 149 }; 135 150 … … 144 159 145 160 // Triggers handlers, native, and extra fn 146 // Triggers 8147 $("#firstp").trigger("click", [1, "2", "abc"], handler 2);161 // Triggers 9 162 $("#firstp").trigger("click", [1, "2", "abc"], handler4); 148 163 149 164 // Simulate a "native" click … … 152 167 }; 153 168 169 // Triggers handlers, native, and extra fn 170 // Triggers 7 171 $("#firstp").trigger("click", [1, "2", "abc"], handler2); 172 154 173 // Trigger only the handlers (no native) 155 174 // Triggers 5 … … 158 177 // Trigger only the handlers (no native) and extra fn 159 178 // Triggers 8 160 equals( $("#firstp").triggerHandler("click", [1, "2", "abc"], handler2), "test", "Verify handler response" );179 equals( $("#firstp").triggerHandler("click", [1, "2", "abc"], handler2), false, "Verify handler response" ); 161 180 162 181 // Build fake click event to pass in … … 170 189 // Triggers 9 171 190 equals( $("#firstp").triggerHandler("click", [eventObj, 1, "2", "abc"], handler), "test", "Verify handler response" ); 191 192 // have the extra handler override the return 193 // Triggers 9 194 equals( $("#firstp").triggerHandler("click", [1, "2", "abc"], handler3), "newVal", "Verify triggerHandler return is overwritten by extra function" ); 195 196 // have the extra handler leave the return value alone 197 // Triggers 9 198 equals( $("#firstp").triggerHandler("click", [1, "2", "abc"], handler4), "test", "Verify triggerHandler return is not overwritten by extra function" ); 172 199 }); 173 200
