Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/jquery/jquery
Browse files Browse the repository at this point in the history
Conflicts:
	src/ajax.js
  • Loading branch information
jaubourg committed Feb 12, 2010
2 parents a74c236 + 5d36fe3 commit bf33549
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 100 deletions.
4 changes: 2 additions & 2 deletions Makefile
Expand Up @@ -51,8 +51,8 @@ init:
@@echo "Grabbing external dependencies..."
@@if test ! -d test/qunit/.git; then git clone git://github.com/jquery/qunit.git test/qunit; fi
@@if test ! -d src/sizzle/.git; then git clone git://github.com/jeresig/sizzle.git src/sizzle; fi
@@cd src/sizzle && git pull origin master > /dev/null 2>&1
@@cd test/qunit && git pull origin master > /dev/null 2>&1
- @@cd src/sizzle && git pull origin master > /dev/null 2>&1
- @@cd test/qunit && git pull origin master > /dev/null 2>&1

jquery: ${DIST_DIR} selector ${JQ}
jq: ${DIST_DIR} ${JQ}
Expand Down
10 changes: 5 additions & 5 deletions src/ajax.js
Expand Up @@ -6,15 +6,15 @@ var rscript = /<script(.|\s)*?\/script>/gi,
rts = /(\?|&)_=.*?(&|$)/,
rurl = /^(\w+:)?\/\/([^\/?#]+)/,
r20 = /%20/g,
noop = jQuery.noop;
noop = jQuery.noop,

jQuery.fn.extend({
// Keep a copy of the old load
_load: jQuery.fn.load,
// Keep a copy of the old load method
_load = jQuery.fn.load;

jQuery.fn.extend({
load: function( url, params, callback ) {
if ( typeof url !== "string" ) {
return this._load( url );
return _load.call( this, url );

// Don't do a request if no elements are being requested
} else if ( !this.length ) {
Expand Down
188 changes: 97 additions & 91 deletions src/event.js
Expand Up @@ -221,7 +221,7 @@ jQuery.event = {
}

// remove generic event handler if no more handlers exist
if ( jQuery.isEmptyObject( events[ type ] ) ) {
if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
removeEvent( elem, type, elemData.handle );
}
Expand Down Expand Up @@ -652,64 +652,65 @@ jQuery.each({
// submit delegation
if ( !jQuery.support.submitBubbles ) {

jQuery.event.special.submit = {
setup: function( data, namespaces ) {
if ( this.nodeName.toLowerCase() !== "form" ) {
jQuery.event.add(this, "click.specialSubmit", function( e ) {
var elem = e.target, type = elem.type;
jQuery.event.special.submit = {
setup: function( data, namespaces ) {
if ( this.nodeName.toLowerCase() !== "form" ) {
jQuery.event.add(this, "click.specialSubmit", function( e ) {
var elem = e.target, type = elem.type;

if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
return trigger( "submit", this, arguments );
}
});
if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
return trigger( "submit", this, arguments );
}
});

jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
var elem = e.target, type = elem.type;
jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
var elem = e.target, type = elem.type;

if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
return trigger( "submit", this, arguments );
}
});
if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
return trigger( "submit", this, arguments );
}
});

} else {
return false;
}
},
} else {
return false;
}
},

teardown: function( namespaces ) {
jQuery.event.remove( this, "click.specialSubmit" );
jQuery.event.remove( this, "keypress.specialSubmit" );
}
};
teardown: function( namespaces ) {
jQuery.event.remove( this, ".specialSubmit" );
}
};

}

// change delegation, happens here so we have bind.
if ( !jQuery.support.changeBubbles ) {

var formElems = /textarea|input|select/i;
var formElems = /textarea|input|select/i,

function getVal( elem ) {
var type = elem.type, val = elem.value;
changeFilters,

if ( type === "radio" || type === "checkbox" ) {
val = elem.checked;
getVal = function( elem ) {
var type = elem.type, val = elem.value;

} else if ( type === "select-multiple" ) {
val = elem.selectedIndex > -1 ?
jQuery.map( elem.options, function( elem ) {
return elem.selected;
}).join("-") :
"";
if ( type === "radio" || type === "checkbox" ) {
val = elem.checked;

} else if ( elem.nodeName.toLowerCase() === "select" ) {
val = elem.selectedIndex;
}
} else if ( type === "select-multiple" ) {
val = elem.selectedIndex > -1 ?
jQuery.map( elem.options, function( elem ) {
return elem.selected;
}).join("-") :
"";

return val;
}
} else if ( elem.nodeName.toLowerCase() === "select" ) {
val = elem.selectedIndex;
}

return val;
},

function testChange( e ) {
testChange = function testChange( e ) {
var elem = e.target, data, val;

if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
Expand All @@ -732,60 +733,57 @@ function testChange( e ) {
e.type = "change";
return jQuery.event.trigger( e, arguments[1], elem );
}
}
};

jQuery.event.special.change = {
filters: {
focusout: testChange,
jQuery.event.special.change = {
filters: {
focusout: testChange,

click: function( e ) {
var elem = e.target, type = elem.type;
click: function( e ) {
var elem = e.target, type = elem.type;

if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
return testChange.call( this, e );
}
},
if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
return testChange.call( this, e );
}
},

// Change has to be called before submit
// Keydown will be called before keypress, which is used in submit-event delegation
keydown: function( e ) {
var elem = e.target, type = elem.type;
// Change has to be called before submit
// Keydown will be called before keypress, which is used in submit-event delegation
keydown: function( e ) {
var elem = e.target, type = elem.type;

if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
(e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
type === "select-multiple" ) {
return testChange.call( this, e );
if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
(e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
type === "select-multiple" ) {
return testChange.call( this, e );
}
},

// Beforeactivate happens also before the previous element is blurred
// with this event you can't trigger a change event, but you can store
// information/focus[in] is not needed anymore
beforeactivate: function( e ) {
var elem = e.target;
jQuery.data( elem, "_change_data", getVal(elem) );
}
},

// Beforeactivate happens also before the previous element is blurred
// with this event you can't trigger a change event, but you can store
// information/focus[in] is not needed anymore
beforeactivate: function( e ) {
var elem = e.target;
jQuery.data( elem, "_change_data", getVal(elem) );
}
},
setup: function( data, namespaces ) {
for ( var type in changeFilters ) {
jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
}

setup: function( data, namespaces ) {
for ( var type in changeFilters ) {
jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
}
return formElems.test( this.nodeName );
},

return formElems.test( this.nodeName );
},
teardown: function( namespaces ) {
jQuery.event.remove( this, ".specialChange" );

teardown: function( namespaces ) {
for ( var type in changeFilters ) {
jQuery.event.remove( this, type + ".specialChange", changeFilters[type] );
return formElems.test( this.nodeName );
}
};

return formElems.test( this.nodeName );
}
};

var changeFilters = jQuery.event.special.change.filters;

changeFilters = jQuery.event.special.change.filters;
}

function trigger( type, elem, args ) {
Expand Down Expand Up @@ -919,9 +917,16 @@ jQuery.fn.extend({
}
});

var liveMap = {
focus: "focusin",
blur: "focusout",
mouseenter: "mouseover",
mouseleave: "mouseout"
};

jQuery.each(["live", "die"], function( i, name ) {
jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
var type, i = 0, match, namespaces,
var type, i = 0, match, namespaces, preType,
selector = origSelector || this.selector,
context = origSelector ? this : jQuery( this.context );

Expand All @@ -941,18 +946,19 @@ jQuery.each(["live", "die"], function( i, name ) {
type = type.replace( rnamespaces, "" );
}

type = type === "focus" ? "focusin" : // focus --> focusin
type === "blur" ? "focusout" : // blur --> focusout
type === "hover" ? types.push("mouseleave" + namespaces) && "mouseenter" : // hover support
type;
if ( type === "hover" ) {
types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
continue;
}

type += namespaces;
preType = type;
type = (liveMap[ type ] || type) + namespaces;

if ( name === "live" ) {
// bind live handler
context.each(function(){
jQuery.event.add( this, liveConvert( type, selector ),
{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn } );
{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
});

} else {
Expand Down Expand Up @@ -1001,7 +1007,7 @@ function liveHandler( event ) {
related = null;

// Those two events require additional checking
if ( handleObj.origType === "mouseenter" || handleObj.origType === "mouseleave" ) {
if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
}

Expand Down
8 changes: 6 additions & 2 deletions test/unit/event.js
Expand Up @@ -72,7 +72,7 @@ test("bind(), multiple events at once and namespaces", function() {
});

test("bind(), namespace with special add", function() {
expect(18);
expect(19);

var div = jQuery("<div/>").bind("test", function(e) {
ok( true, "Test event fired." );
Expand All @@ -87,7 +87,9 @@ test("bind(), namespace with special add", function() {
equals( e.target, div[0], "And that the target is correct." );
},
setup: function(){},
teardown: function(){},
teardown: function(){
ok(true, "Teardown called.");
},
add: function( handleObj ) {
var handler = handleObj.handler;
handleObj.handler = function(e) {
Expand Down Expand Up @@ -116,6 +118,8 @@ test("bind(), namespace with special add", function() {

// Should trigger 2
div.trigger("test.b");

div.unbind("test");
});

test("bind(), no data", function() {
Expand Down

0 comments on commit bf33549

Please sign in to comment.