WEB开发网
开发学院网页设计JavaScript Jquery源码分析---Event分析 阅读

Jquery源码分析---Event分析

 2010-09-14 13:36:25 来源:WEB开发网   
核心提示: Bind中对于unload的事件,只能运行一次,Jquery源码分析---Event分析(3),其它的就采用默认的注册方式,// 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数,//如果是,则会继续保持“悬停”状态,// 在每个对象上,这个事

Bind中对于unload的事件,只能运行一次,其它的就采用默认的注册方式。

// 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。
// 在每个对象上,这个事件处理函数只会被执行一次。其他规则与bind()函数相同。
// 这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为。
// 如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false。
  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);/this->当前的元素
       });
      return this.each(function() {
       jQuery.event.add(this, type, one, fn && data);
      });
   },

One与bind基本上差不多,不同的在调用jQuery.event.add时,把注册的事件处理的函数做了一个小小的调整。One调用了jQuery.event.proxy进行了代理传入的事件处理函数。在事件触发调用这个代理的函数时,先把事件从cache中删除,再执行注册的事件函数。这里就是闭包的应用,通过闭包得到fn注册的事件函数的引用。

//一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。
//这是一个自定义的方法,它为频繁使用的任务提供了一种“保持在其中”的状态。
//当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,
/会触发指定的第二个函数。而且,会伴随着对鼠标是否仍然处在特定元素中的检测(例如,处在div中的图像),
 //如果是,则会继续保持“悬停”状态,而不触发移出事件(修正了使用mouseout事件的一个常见错误)。
    hover : function(fnOver, fnOut) {
      return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);
   },

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Jquery 源码 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接