⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jquery.js

📁 jQuery即学即用
💻 JS
📖 第 1 页 / 共 5 页
字号:
				jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); 			},			remove: function( handleObj ) {				var remove = true,					type = handleObj.origType.replace(rnamespaces, "");								jQuery.each( jQuery.data(this, "events").live || [], function() {					if ( type === this.origType.replace(rnamespaces, "") ) {						remove = false;						return false;					}				});				if ( remove ) {					jQuery.event.remove( this, handleObj.origType, liveHandler );				}			}		},		beforeunload: {			setup: function( data, namespaces, eventHandle ) {				// We only want to do this special case on windows				if ( this.setInterval ) {					this.onbeforeunload = eventHandle;				}				return false;			},			teardown: function( namespaces, eventHandle ) {				if ( this.onbeforeunload === eventHandle ) {					this.onbeforeunload = null;				}			}		}	}};var removeEvent = document.removeEventListener ?	function( elem, type, handle ) {		elem.removeEventListener( type, handle, false );	} : 	function( elem, type, handle ) {		elem.detachEvent( "on" + type, handle );	};jQuery.Event = function( src ) {	// Allow instantiation without the 'new' keyword	if ( !this.preventDefault ) {		return new jQuery.Event( src );	}	// Event object	if ( src && src.type ) {		this.originalEvent = src;		this.type = src.type;	// Event type	} else {		this.type = src;	}	// timeStamp is buggy for some events on Firefox(#3843)	// So we won't rely on the native value	this.timeStamp = now();	// Mark it as fixed	this[ expando ] = true;};function returnFalse() {	return false;}function returnTrue() {	return true;}// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.htmljQuery.Event.prototype = {	preventDefault: function() {		this.isDefaultPrevented = returnTrue;		var e = this.originalEvent;		if ( !e ) {			return;		}				// if preventDefault exists run it on the original event		if ( e.preventDefault ) {			e.preventDefault();		}		// otherwise set the returnValue property of the original event to false (IE)		e.returnValue = false;	},	stopPropagation: function() {		this.isPropagationStopped = returnTrue;		var e = this.originalEvent;		if ( !e ) {			return;		}		// if stopPropagation exists run it on the original event		if ( e.stopPropagation ) {			e.stopPropagation();		}		// otherwise set the cancelBubble property of the original event to true (IE)		e.cancelBubble = true;	},	stopImmediatePropagation: function() {		this.isImmediatePropagationStopped = returnTrue;		this.stopPropagation();	},	isDefaultPrevented: returnFalse,	isPropagationStopped: returnFalse,	isImmediatePropagationStopped: returnFalse};// Checks if an event happened on an element within another element// Used in jQuery.event.special.mouseenter and mouseleave handlersvar withinElement = function( event ) {	// Check if mouse(over|out) are still within the same parent element	var parent = event.relatedTarget;	// Firefox sometimes assigns relatedTarget a XUL element	// which we cannot access the parentNode property of	try {		// Traverse up the tree		while ( parent && parent !== this ) {			parent = parent.parentNode;		}		if ( parent !== this ) {			// set the correct event type			event.type = event.data;			// handle event if we actually just moused on to a non sub-element			jQuery.event.handle.apply( this, arguments );		}	// assuming we've left the element since we most likely mousedover a xul element	} catch(e) { }},// In case of event delegation, we only need to rename the event.type,// liveHandler will take care of the rest.delegate = function( event ) {	event.type = event.data;	jQuery.event.handle.apply( this, arguments );};// Create mouseenter and mouseleave eventsjQuery.each({	mouseenter: "mouseover",	mouseleave: "mouseout"}, function( orig, fix ) {	jQuery.event.special[ orig ] = {		setup: function( data ) {			jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );		},		teardown: function( data ) {			jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );		}	};});// submit delegationif ( !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;					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;					if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {						return trigger( "submit", this, arguments );					}				});			} else {				return false;			}		},		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,	changeFilters,	getVal = function( elem ) {		var type = elem.type, val = elem.value;		if ( type === "radio" || type === "checkbox" ) {			val = elem.checked;		} else if ( type === "select-multiple" ) {			val = elem.selectedIndex > -1 ?				jQuery.map( elem.options, function( elem ) {					return elem.selected;				}).join("-") :				"";		} else if ( elem.nodeName.toLowerCase() === "select" ) {			val = elem.selectedIndex;		}		return val;	},	testChange = function testChange( e ) {		var elem = e.target, data, val;		if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {			return;		}		data = jQuery.data( elem, "_change_data" );		val = getVal(elem);		// the current data will be also retrieved by beforeactivate		if ( e.type !== "focusout" || elem.type !== "radio" ) {			jQuery.data( elem, "_change_data", val );		}				if ( data === undefined || val === data ) {			return;		}		if ( data != null || val ) {			e.type = "change";			return jQuery.event.trigger( e, arguments[1], elem );		}	};	jQuery.event.special.change = {		filters: {			focusout: testChange, 			click: function( e ) {				var elem = e.target, type = elem.type;				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;				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) );			}		},		setup: function( data, namespaces ) {			if ( this.type === "file" ) {				return false;			}			for ( var type in changeFilters ) {				jQuery.event.add( this, type + ".specialChange", changeFilters[type] );			}			return formElems.test( this.nodeName );		},		teardown: function( namespaces ) {			jQuery.event.remove( this, ".specialChange" );			return formElems.test( this.nodeName );		}	};	changeFilters = jQuery.event.special.change.filters;}function trigger( type, elem, args ) {	args[0].type = type;	return jQuery.event.handle.apply( elem, args );}// Create "bubbling" focus and blur eventsif ( document.addEventListener ) {	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {		jQuery.event.special[ fix ] = {			setup: function() {				this.addEventListener( orig, handler, true );			}, 			teardown: function() { 				this.removeEventListener( orig, handler, true );			}		};		function handler( e ) { 			e = jQuery.event.fix( e );			e.type = fix;			return jQuery.event.handle.call( this, e );		}	});}jQuery.each(["bind", "one"], function( i, name ) {	jQuery.fn[ name ] = function( type, data, fn ) {		// Handle object literals		if ( typeof type === "object" ) {			for ( var key in type ) {				this[ name ](key, data, type[key], fn);			}			return this;		}				if ( jQuery.isFunction( data ) ) {			fn = data;			data = undefined;		}		var handler = name === "one" ? jQuery.proxy( fn, function( event ) {			jQuery( this ).unbind( event, handler );			return fn.apply( this, arguments );		}) : fn;		if ( type === "unload" && name !== "one" ) {			this.one( type, data, fn );		} else {			for ( var i = 0, l = this.length; i < l; i++ ) {				jQuery.event.add( this[i], type, handler, data );			}		}		return this;	};});jQuery.fn.extend({	unbind: function( type, fn ) {		// Handle object literals		if ( typeof type === "object" && !type.preventDefault ) {			for ( var key in type ) {				this.unbind(key, type[key]);			}		} else {			for ( var i = 0, l = this.length; i < l; i++ ) {				jQuery.event.remove( this[i], type, fn );			}		}		return this;	},		delegate: function( selector, types, data, fn ) {		return this.live( types, data, fn, selector );	},		undelegate: function( selector, types, fn ) {		if ( arguments.length === 0 ) {				return this.unbind( "live" );				} else {			return this.die( types, null, fn, selector );		}	},		trigger: function( type, data ) {		return this.each(function() {			jQuery.event.trigger( type, data, this );		});	},	triggerHandler: function( type, data ) {		if ( this[0] ) {			var event = jQuery.Event( type );			event.preventDefault();			event.stopPropagation();			jQuery.event.trigger( event, data, this[0] );			return event.result;		}	},	toggle: function( fn ) {		// Save reference to arguments for access in closure		var args = arguments, i = 1;		// link all the functions, so any of them can unbind this click handler		while ( i < args.length ) {			jQuery.proxy( fn, args[ i++ ] );		}		return this.click( jQuery.proxy( fn, function( event ) {			// Figure out which function to execute			var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;			jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );			// Make sure that clicks stop			event.preventDefault();			// and execute the function			return args[ lastToggle ].apply( this, arguments ) || false;		}));	},	hover: function( fnOver, fnOut ) {		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );	}});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, preType,			selector = origSelector || this.selector,			context = origSelector ? this : jQuery( this.context );		if ( jQuery.isFunction( data ) ) {			fn = data;			data = undefined;		}		types = (types || "").split(" ");		while ( (type = types[ i++ ]) != null ) {			match = rnamespaces.exec( type );			namespaces = "";			if ( match )  {				namespaces = match[0];				type = type.replace( rnamespaces, "" );			}			if ( type === "hover" ) {				types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );				continue;			}			preType = type;			if ( type === "focus" || type === "blur" ) {				types.push( liveMap[ type ] + namespaces );				type = type + namespaces;			} else {				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, preType: preType } );				});			} else {				// unbind live handler				context.unbind( liveConvert( type, selector ), fn );			}		}				return this;	}});function liveHandler( event ) {	var stop, elems = [], selectors = [], args = arguments,		related, match, handleObj, elem, j, i, l, data,		events = jQuery.data( this, "events" );	// Make sure we avoid non-left-click bubbling in Firefox (#3861)	if ( event.liveFire

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -