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

📄 jquery.js

📁 模拟的土豆网视频网站
💻 JS
📖 第 1 页 / 共 5 页
字号:
				return fn.apply(this, arguments);			});			// Store data in unique handler			handler.data = data;		}		// Init the element's event structure		var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),			handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){				// Handle the second event of a trigger and when				// an event is called after a page has unloaded				if ( typeof jQuery != "undefined" && !jQuery.event.triggered )					return jQuery.event.handle.apply(arguments.callee.elem, arguments);			});		// Add elem as a property of the handle function		// This is to prevent a memory leak with non-native		// event in IE.		handle.elem = elem;		// Handle multiple events separated by a space		// jQuery(...).bind("mouseover mouseout", fn);		jQuery.each(types.split(/\s+/), function(index, type) {			// Namespaced event handlers			var parts = type.split(".");			type = parts[0];			handler.type = parts[1];			// Get the current list of functions bound to this event			var handlers = events[type];			// Init the event handler queue			if (!handlers) {				handlers = events[type] = {};				// Check for a special event handler				// Only use addEventListener/attachEvent if the special				// events handler returns false				if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false ) {					// Bind the global event handler to the element					if (elem.addEventListener)						elem.addEventListener(type, handle, false);					else if (elem.attachEvent)						elem.attachEvent("on" + type, handle);				}			}			// Add the function to the element's handler list			handlers[handler.guid] = handler;			// Keep track of which events have been used, for global triggering			jQuery.event.global[type] = true;		});		// Nullify elem to prevent memory leaks in IE		elem = null;	},	guid: 1,	global: {},	// Detach an event or set of events from an element	remove: function(elem, types, handler) {		// don't do events on text and comment nodes		if ( elem.nodeType == 3 || elem.nodeType == 8 )			return;		var events = jQuery.data(elem, "events"), ret, index;		if ( events ) {			// Unbind all events for the element			if ( types == undefined || (typeof types == "string" && types.charAt(0) == ".") )				for ( var type in events )					this.remove( elem, type + (types || "") );			else {				// types is actually an event object here				if ( types.type ) {					handler = types.handler;					types = types.type;				}				// Handle multiple events seperated by a space				// jQuery(...).unbind("mouseover mouseout", fn);				jQuery.each(types.split(/\s+/), function(index, type){					// Namespaced event handlers					var parts = type.split(".");					type = parts[0];					if ( events[type] ) {						// remove the given handler for the given type						if ( handler )							delete events[type][handler.guid];						// remove all handlers for the given type						else							for ( handler in events[type] )								// Handle the removal of namespaced events								if ( !parts[1] || events[type][handler].type == parts[1] )									delete events[type][handler];						// remove generic event handler if no more handlers exist						for ( ret in events[type] ) break;						if ( !ret ) {							if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false ) {								if (elem.removeEventListener)									elem.removeEventListener(type, jQuery.data(elem, "handle"), false);								else if (elem.detachEvent)									elem.detachEvent("on" + type, jQuery.data(elem, "handle"));							}							ret = null;							delete events[type];						}					}				});			}			// Remove the expando if it's no longer used			for ( ret in events ) break;			if ( !ret ) {				var handle = jQuery.data( elem, "handle" );				if ( handle ) handle.elem = null;				jQuery.removeData( elem, "events" );				jQuery.removeData( elem, "handle" );			}		}	},	trigger: function(type, data, elem, donative, extra) {		// Clone the incoming data, if any		data = jQuery.makeArray(data);		if ( type.indexOf("!") >= 0 ) {			type = type.slice(0, -1);			var exclusive = true;		}		// Handle a global trigger		if ( !elem ) {			// Only trigger if we've ever bound an event for it			if ( this.global[type] )				jQuery("*").add([window, document]).trigger(type, data);		// Handle triggering a single element		} else {			// don't do events on text and comment nodes			if ( elem.nodeType == 3 || elem.nodeType == 8 )				return undefined;			var val, ret, fn = jQuery.isFunction( elem[ type ] || null ),				// Check to see if we need to provide a fake event, or not				event = !data[0] || !data[0].preventDefault;			// Pass along a fake event			if ( event ) {				data.unshift({					type: type,					target: elem,					preventDefault: function(){},					stopPropagation: function(){},					timeStamp: now()				});				data[0][expando] = true; // no need to fix fake event			}			// Enforce the right trigger type			data[0].type = type;			if ( exclusive )				data[0].exclusive = true;			// Trigger the event, it is assumed that "handle" is a function			var handle = jQuery.data(elem, "handle");			if ( handle )				val = handle.apply( elem, data );			// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)			if ( (!fn || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )				val = false;			// Extra functions don't get the custom event object			if ( event )				data.shift();			// Handle triggering of extra function			if ( extra && jQuery.isFunction( extra ) ) {				// call the extra function and tack the current return value on the end for possible inspection				ret = extra.apply( elem, val == null ? data : data.concat( val ) );				// if anything is returned, give it precedence and have it overwrite the previous value				if (ret !== undefined)					val = ret;			}			// Trigger the native events (except for clicks on links)			if ( fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == "click") ) {				this.triggered = true;				try {					elem[ type ]();				// prevent IE from throwing an error for some hidden elements				} catch (e) {}			}			this.triggered = false;		}		return val;	},	handle: function(event) {		// returned undefined or false		var val, ret, namespace, all, handlers;		event = arguments[0] = jQuery.event.fix( event || window.event );		// Namespaced event handlers		namespace = event.type.split(".");		event.type = namespace[0];		namespace = namespace[1];		// Cache this now, all = true means, any handler		all = !namespace && !event.exclusive;		handlers = ( jQuery.data(this, "events") || {} )[event.type];		for ( var j in handlers ) {			var handler = handlers[j];			// Filter the functions by class			if ( all || handler.type == namespace ) {				// Pass in a reference to the handler function itself				// So that we can later remove it				event.handler = handler;				event.data = handler.data;				ret = handler.apply( this, arguments );				if ( val !== false )					val = ret;				if ( ret === false ) {					event.preventDefault();					event.stopPropagation();				}			}		}		return val;	},	fix: function(event) {		if ( event[expando] == true )			return event;		// store a copy of the original event object		// and "clone" to set read-only properties		var originalEvent = event;		event = { originalEvent: originalEvent };		var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");		for ( var i=props.length; i; i-- )			event[ props[i] ] = originalEvent[ props[i] ];		// Mark it as fixed		event[expando] = true;		// add preventDefault and stopPropagation since		// they will not work on the clone		event.preventDefault = function() {			// if preventDefault exists run it on the original event			if (originalEvent.preventDefault)				originalEvent.preventDefault();			// otherwise set the returnValue property of the original event to false (IE)			originalEvent.returnValue = false;		};		event.stopPropagation = function() {			// if stopPropagation exists run it on the original event			if (originalEvent.stopPropagation)				originalEvent.stopPropagation();			// otherwise set the cancelBubble property of the original event to true (IE)			originalEvent.cancelBubble = true;		};		// Fix timeStamp		event.timeStamp = event.timeStamp || now();		// Fix target property, if necessary		if ( !event.target )			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either		// check if target is a textnode (safari)		if ( event.target.nodeType == 3 )			event.target = event.target.parentNode;		// Add relatedTarget, if necessary		if ( !event.relatedTarget && event.fromElement )			event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;		// Calculate pageX/Y if missing and clientX/Y available		if ( event.pageX == null && event.clientX != null ) {			var doc = document.documentElement, body = document.body;			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);			event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);		}		// Add which for key events		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )			event.which = event.charCode || event.keyCode;		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)		if ( !event.metaKey && event.ctrlKey )			event.metaKey = event.ctrlKey;		// Add which for click: 1 == left; 2 == middle; 3 == right		// Note: button is not normalized, so don't use it		if ( !event.which && event.button )			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));		return event;	},	proxy: function( fn, proxy ){		// Set the guid of unique handler to the same of original handler, so it can be removed		proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;		// So proxy can be declared as an argument		return proxy;	},	special: {		ready: {			setup: function() {				// Make sure the ready event is setup				bindReady();				return;			},			teardown: function() { return; }		},		mouseenter: {			setup: function() {				if ( jQuery.browser.msie ) return false;				jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);				return true;			},			teardown: function() {				if ( jQuery.browser.msie ) return false;				jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);				return true;			},			handler: function(event) {				// If we actually just moused on to a sub-element, ignore it				if ( withinElement(event, this) ) return true;				// Execute the right handlers by setting the event type to mouseenter				event.type = "mouseenter";				return jQuery.event.handle.apply(this, arguments);			}		},		mouseleave: {			setup: function() {				if ( jQuery.browser.msie ) return false;				jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);				return true;			},			teardown: function() {				if ( jQuery.browser.msie ) return false;				jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);				return true;			},			handler: function(event) {				// If we actually just moused on to a sub-element, ignore it				if ( withinElement(event, this) ) return true;				// Execute the right handlers by setting the event type to mouseleave				event.type = "mouseleave";				return jQuery.event.handle.apply(this, arguments);			}		}	}};jQuery.fn.extend({	bind: function( type, data, fn ) {		return type == "unload" ? this.one(type, data, fn) : this.each(function(){			jQuery.event.add( this, type, fn || data, fn && data );		});	},	one: function( type, data, fn ) {		var one = jQuery.event.proxy( fn || data, function(event) {			jQuery(this).unbind(event, one);			return (fn || data).apply( this, arguments );		});		return this.each(function(){			jQuery.event.add( this, type, one, fn && data);		});	},	unbind: function( type, fn ) {		return this.each(function(){			jQuery.event.remove( this, type, fn );		});	},	trigger: function( type, data, fn ) {		return this.each(function(){			jQuery.event.trigger( type, data, this, true, fn );		});	},	triggerHandler: function( type, data, fn ) {		return this[0] && jQuery.event.trigger( type, data, this[0], false, fn );	},	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.event.proxy( fn, args[i++] );		return this.click( jQuery.event.proxy( fn, function(event) {			// Figure out which function to execute			this.lastToggle = ( this.lastToggle || 0 ) % i;			// Make sure that clicks stop			event.preventDefault();			// and execute the function			return args[ this.lastToggle++ ].apply( this, arguments ) || false;		}));	},	hover: function(fnOver, fnOut) {		return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);	},	ready: function(fn) {		// Attach the listeners		bindReady();		// If the DOM is already ready		if ( jQuery.isReady )			// Execute the function immediately			fn.call( document, jQuery );		// Otherwise, remember the function for later		else			// Add the function to the wait list			jQuery.readyList.push( function() { return fn.call(this, jQuery); } );		return this;	}});jQuery.extend({	isReady: false,	readyList: [],	// Handle when the DOM is ready	ready: function() {		// Make

⌨️ 快捷键说明

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