aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2006-10-26 16:09:55 +0000
committerJohn Resig <jeresig@gmail.com>2006-10-26 16:09:55 +0000
commit476cbd2f1afd39e32feb350a732877c18f9f7715 (patch)
tree4f9c1258ac74495ee53ff69ed31f1eccc3399ee3 /src
parent44e4b36c083fd0728c5a73c7b71b118c336eb5d7 (diff)
downloadjquery-476cbd2f1afd39e32feb350a732877c18f9f7715.tar.gz
jquery-476cbd2f1afd39e32feb350a732877c18f9f7715.zip
Rolled back Joern's changes. They've been moved to another branch, and will be merged for 1.1.
Diffstat (limited to 'src')
-rw-r--r--src/event/event.js20
-rw-r--r--src/jquery/jquery.js27
2 files changed, 21 insertions, 26 deletions
diff --git a/src/event/event.js b/src/event/event.js
index 55e205ae2..a60c4616a 100644
--- a/src/event/event.js
+++ b/src/event/event.js
@@ -1583,8 +1583,8 @@ new function(){
var o = e[i];
// Handle event binding
- jQuery.fn[o] = function(f, amount){
- return f ? this.bind(o, f, amount) : this.trigger(o);
+ jQuery.fn[o] = function(f){
+ return f ? this.bind(o, f) : this.trigger(o);
};
// Handle event unbinding
@@ -1592,8 +1592,20 @@ new function(){
// Finally, handle events that only fire once
jQuery.fn["one"+o] = function(f){
- // use bind with amount param to bind only once
- return this.bind(o, f, 1);
+ // Attach the event listener
+ return this.each(function(){
+
+ var count = 0;
+
+ // Add the event
+ jQuery.event.add( this, o, function(e){
+ // If this function has already been executed, stop
+ if ( count++ ) return true;
+
+ // And execute the bound function
+ return f.apply(this, [e]);
+ });
+ });
};
};
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index 65f842381..9561ea9de 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -2271,7 +2271,7 @@ jQuery.extend({
handle: function(event) {
if ( typeof jQuery == "undefined" ) return false;
- event = jQuery.event.fix( event );
+ event = event || jQuery.event.fix( window.event );
// If no correct event was found, fail
if ( !event ) return false;
@@ -2295,19 +2295,16 @@ jQuery.extend({
},
fix: function(event) {
- if(jQuery.browser.msie) {
- event = window.event;
+ if ( event ) {
event.preventDefault = function() {
this.returnValue = false;
};
+
event.stopPropagation = function() {
this.cancelBubble = true;
};
- event.target = event.srcElement;
- } else if(jQuery.browser.safari && event.target.nodeType == 3) {
- event = jQuery.extend({}, event);
- event.target = event.target.parentNode;
}
+
return event;
}
@@ -3399,29 +3396,15 @@ jQuery.macros = {
* } )
* @desc Stop only an event from bubbling by using the stopPropagation method.
*
- * @example $("form").bind( "submit", function(event) {
- * // do something after submit
- * }, 1 )
- * @desc Executes the function only on the first submit event and removes it afterwards
- *
* @name bind
* @type jQuery
* @param String type An event type
* @param Function fn A function to bind to the event on each of the set of matched elements
- * @param Number amount An optional amount of times to execute the bound function
* @cat Events
*/
- bind: function( type, fn, amount ) {
+ bind: function( type, fn ) {
if ( fn.constructor == String )
fn = new Function("e", ( !fn.indexOf(".") ? "jQuery(this)" : "return " ) + fn);
- if( amount > 0 ) {
- var element = this, handler = fn, count = 0;
- fn = function(e) {
- if( ++count >= amount )
- jQuery(element).unbind(type, fn);
- handler.apply(element, [e]);
- };
- }
jQuery.event.add( this, type, fn );
},