Makes sure options.context is used as the context for global ajax events only if it's a DOM node.

This commit is contained in:
jaubourg 2011-01-31 17:23:36 +01:00
parent 389c099df6
commit 485fa0c42a

View File

@ -334,13 +334,17 @@ jQuery.extend({
var // Create the final options object
s = jQuery.extend( true, {}, jQuery.ajaxSettings, options ),
// Callbacks contexts
// Callbacks context
// We force the original context if it exists
// or take it from jQuery.ajaxSettings otherwise
// (plain objects used as context get extended)
callbackContext =
( s.context = ( "context" in options ? options : jQuery.ajaxSettings ).context ) || s,
globalEventContext = callbackContext === s ? jQuery.event : jQuery( callbackContext ),
// Context for global events
// It's the callbackContext if one was provided in the options
// and if it's a DOM node
globalEventContext = callbackContext !== s && callbackContext.nodeType ?
jQuery( callbackContext ) : jQuery.event,
// Deferreds
deferred = jQuery.Deferred(),
completeDeferred = jQuery._Deferred(),