`
- 浏览:
94912 次
- 性别:
- 来自:
北京
-
-
- jQuery.event = {
-
-
add : function(elem, types, handler, data) {
-
if (elem.nodeType == 3 || elem.nodeType == 8)
-
return;
-
-
if (jQuery.browser.msie && elem.setInterval)
- elem = window;
-
-
if (!handler.guid)
-
handler.guid = this.guid++;
-
-
if (data != undefined) {
-
var fn = handler;
-
handler = this.proxy(fn, function() {
-
return fn.apply(this, arguments);
- });
- handler.data = data;
- }
-
-
var events = jQuery.data(elem, "events")
-
|| jQuery.data(elem, "events", {}),
-
-
handle = jQuery.data(elem, "handle")
-
|| jQuery.data(elem, "handle", function() {
-
-
if (typeof jQuery != "undefined"
- && !jQuery.event.triggered)
-
return jQuery.event.handle.apply(
- arguments.callee.elem, arguments);
- });
-
- handle.elem = elem;
-
-
jQuery.each(types.split(/\s+/), function(index, type) {
-
-
var parts = type.split(".");
- type = parts[0];
- handler.type = parts[1];
-
-
var handlers = events[type];
-
if (!handlers) {
- handlers = events[type] = {};
-
-
if (!jQuery.event.special[type]
- || jQuery.event.special[type].setup
-
.call(elem, data) === false) {
-
-
if (elem.addEventListener)
-
elem.addEventListener(type, handle, false);
-
else if (elem.attachEvent)
-
elem.attachEvent("on" + type, handle);
- }
- }
-
-
- handlers[handler.guid] = handler;
-
-
jQuery.event.global[type] = true;
- });
-
-
elem = null;
- },
- guid : 1,
- global : {},
-
-
remove : function(elem, types, handler) {
-
if (elem.nodeType == 3 || elem.nodeType == 8)
-
return;
-
-
var events = jQuery.data(elem, "events"), ret, index;
-
if (events) {
-
-
if (types == undefined
-
|| (typeof types == "string" && types.charAt(0) == "."))
-
for (var type in events)
-
this.remove(elem, type + (types || ""));
-
else {
-
-
if (types.type) {
- handler = types.handler;
- types = types.type;
- }
-
- jQuery
-
.each(types.split(/\s+/), function(index, type) {
-
-
var parts = type.split(".");
- type = parts[0];
-
if (events[type]) {
-
if (handler)
-
delete events[type][handler.guid];
-
else
-
for (handler in events[type])
-
if (!parts[1]
- || events[type][handler].type == parts[1])
-
delete events[type][handler];
-
-
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];
- }
- }
- });
- }
-
-
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) {
- data = jQuery.makeArray(data);
-
if (type.indexOf("!") >= 0) {
-
type = type.slice(0, -1);
-
var exclusive = true;
- }
-
if (!elem) {
-
if (this.global[type])
-
jQuery.each(jQuery.cache, function() {
-
-
if (this.events && this.events[type])
-
jQuery.event.trigger(type, data, this.handle.elem);
- });
-
} else {
-
if (elem.nodeType == 3 || elem.nodeType == 8)
-
return undefined;
-
var val, ret, fn = jQuery.isFunction(elem[type] || null),
-
- event = !data[0] || !data[0].preventDefault;
-
-
if (event) {
-
data.unshift( {
- type : type,
- target : elem,
-
preventDefault : function() {
- },
-
stopPropagation : function() {
- },
- timeStamp : now()
- });
-
data[0][expando] = true;
- }
-
- data[0].type = type;
-
if (exclusive)
-
data[0].exclusive = true;
-
-
var handle = jQuery.data(elem, "handle");
-
if (handle)
- val = handle.apply(elem, data);
-
-
-
-
if ((!fn || (jQuery.nodeName(elem, 'a') && type == "click"))
-
&& elem["on" + type]&& elem["on" + type].apply(elem, data) === false)
-
val = false;
-
-
if (event)
- data.shift();
-
-
if (extra && jQuery.isFunction(extra)) {
-
-
ret = extra.apply(elem, val == null ? data : data.concat(val));
-
-
-
if (ret !== undefined)
- val = ret;
- }
-
-
if (fn && donative !== false && val !== false
-
&& !(jQuery.nodeName(elem, 'a') && type == "click")) {
-
this.triggered = true;
-
try {
- elem[type]();
-
-
} catch (e) {
- }
- }
-
this.triggered = false;
- }
-
return val;
- },
-
handle : function(event) {
-
-
var val, ret, namespace, all, handlers;
- event = arguments[0] = jQuery.event.fix(event || window.event);
-
-
namespace = event.type.split(".");
- event.type = namespace[0];
- namespace = namespace[1];
-
- all = !namespace && !event.exclusive;
-
-
handlers = (jQuery.data(this, "events") || {})[event.type];
-
for (var j in handlers) {
-
var handler = handlers[j];
-
-
if (all || handler.type == namespace) {
-
- 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;
- },
-
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(" "),
-
-
fix : function(event) {
-
if (event[expando] == true)
-
return event;
-
-
var originalEvent = event;
- event = {
- originalEvent : originalEvent
- };
-
for (var i = this.props.length, prop;i;) {
-
prop = this.props[--i];
- event[prop] = originalEvent[prop];
- }
-
-
event[expando] = true;
-
-
-
event.preventDefault = function() {
-
-
if (originalEvent.preventDefault)
- originalEvent.preventDefault();
-
-
originalEvent.returnValue = false;
- };
-
event.stopPropagation = function() {
-
-
if (originalEvent.stopPropagation)
- originalEvent.stopPropagation();
-
-
originalEvent.cancelBubble = true;
- };
-
- event.timeStamp = event.timeStamp || now();
-
-
if (!event.target)
- event.target = event.srcElement || document;
-
if (event.target.nodeType == 3)
- event.target = event.target.parentNode;
-
-
if (!event.relatedTarget && event.fromElement)
- event.relatedTarget = event.fromElement == event.target
- ? event.toElement
- : event.fromElement;
-
-
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);
- }
-
-
if (!event.which
- && ((event.charCode || event.charCode === 0)
- ? event.charCode
- : event.keyCode))
- event.which = event.charCode || event.keyCode;
-
-
if (!event.metaKey && event.ctrlKey)
- event.metaKey = event.ctrlKe
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
《jQuery源码详细分析中文注释》是一份深入解析jQuery库源码的宝贵资源,它为开发者提供了理解这个广泛使用的JavaScript库内部工作机制的机会。jQuery以其简洁的API和强大的功能深受前端开发者的喜爱,但其背后的...
**jQuery 教程 源码+实例+注释** jQuery 是一个广泛应用于网页开发的JavaScript库,它简化了HTML文档遍历、事件处理、动画设计以及Ajax交互。本教程针对初学者,旨在通过源码、实例和详尽的注释帮助你快速掌握...
**jQuery 教程 源码+实例+注释 [新手入门提高速成]** ...通过这个教程,你将全面了解 jQuery 的基本概念,掌握其核心功能,并通过实例和源码注释深入理解其实现机制。不断实践和探索,你将在 jQuery 领域更进一步。
以下是完整的JavaScript代码示例,包括源码和注释: ```javascript $(document).ready(function() { // 当鼠标按下时,开始拖动 $("#draggable").mousedown(function(event) { // 记录鼠标按下时的位置 var ...
《jQuery实现的网页版打砖块小游戏源码分析》 jQuery是一个广泛应用于Web开发的JavaScript库,它简化了HTML文档遍历、事件处理、...实际应用中,开发者还需要阅读源码并根据注释理解代码逻辑,以便进一步学习和改进。
"基于jQuery实现模仿京东侧边购物车菜单特效源码"这个标题指出,这是一个关于前端开发的项目,特别关注于使用jQuery库来创建一个与京东网站相似的侧边购物车菜单的动画效果。jQuery是一个广泛使用的JavaScript库,它...
- **jQuery源码阅读**:理解.min.js背后的源码逻辑,有助于深入学习JavaScript和前端开发。 总之,jQuery 1.3.2.min.js作为一款经典的JavaScript库,不仅简化了DOM操作,还带来了丰富的动画效果和便捷的AJAX功能,...
1. **事件监听**:jQuery提供了便捷的事件绑定方法,如`$(element).on('event', callback)`,在这个案例中,可能使用了`mousedown`、`mousemove`和`mouseup`事件来追踪用户的鼠标操作,实现拖拽的开始、进行和结束。...
- **事件处理(Event Handling)**:jQuery简化了事件绑定,如`$("button").click(function() {...})`监听按钮点击事件。 - **动画效果(Animation)**:`fadeIn()`, `slideToggle()`, `animate()`等方法使创建...
"使用须知.txt"文件可能包含了关于如何在自己的项目中集成和使用这些源码的说明,而"132689909636681178"可能是具体的源码文件,可能包含更详细的实现和注释。通过研究这些文件,你可以更深入地了解这个功能的实现...
《jQuery编写的推箱子》是一款基于JavaScript库jQuery开发的在线推箱子游戏,它以其独特的编程...通过深入研究源码和注释,开发者可以了解到如何利用jQuery实现一个完整的交互式应用,同时也可以体会到游戏设计的乐趣。
jQuery源码组织清晰,注释详尽,是学习JavaScript设计模式和优化技巧的好材料。例如,它的选择器引擎Sizzle,以及事件处理和动画实现都是值得研究的部分。 **八、工具与框架** jQuery还发展出一系列工具和框架,如...
未压缩版(通常称为源码版)是供开发者阅读和调试用的,代码未经过混淆和压缩,保留了原始的注释和变量名,方便理解内部工作原理。在开发阶段,使用未压缩版有助于调试和定位问题。 压缩版(通常称为生产版)则是...
**jQuery教程及源码解析** jQuery是一个广泛应用于前端开发的JavaScript库,它的出现极大地简化了JavaScript的DOM操作、事件处理...结合提供的源码、实例和注释,您将能更好地理解和运用jQuery,成为前端开发的高手。
接下来的代码是压缩后的JavaScript代码,包含了jQuery的核心实现,由于是压缩版,直接阅读理解较为困难,通常会在开发环境中引用未压缩的源码。 `x.fn.init`是jQuery构造函数的初始化方法,用于创建jQuery对象。`x....
然而,值得注意的是,尽管jQuery的源码中有关于`event.which`处理鼠标的注释,但在jQuery文档中,`event.which`主要被描述为适用于键盘事件,并没有明确提及鼠标事件。实际上,`event.which`在`click`事件中可能无法...
《MyRead:深入理解jQuery源码》 在IT领域,jQuery是一个不可或缺的JavaScript库,它极大地简化了DOM操作、事件处理、动画制作等任务。本文将基于“MyRead”项目,详细探讨对jQuery源代码的阅读与理解,帮助开发者...
在jQuery.event.add方法的源码中,首先检查elem是否为文本节点或注释节点,这两种类型的节点不会执行事件绑定,因此会直接返回。随后,如果handler参数为false,jQuery将handler赋值为一个预定义的returnFalse函数,...
fullpage是jquery的插件库jquery.fullpage.js,里面是一个应用于移动端的小项目,rem布局 + fullpage页面滑动 js_event是将所有事件的知识点写成Demo,包括浏览器兼容 mochaDemo 是mocha单元测试使用demo es6-...