jqueryUI 中的cleanData

来源:互联网 发布:mac西柚色和珊瑚色区别 编辑:程序博客网 时间:2024/06/05 09:57

今天看了下jqueryUI中jquery.ui.widget.js中的源码,看到如下 代码。

var _cleanData = $.cleanData;$.cleanData = function( elems ) {for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {$( elem ).triggerHandler( "remove" );}_cleanData( elems );};

想了半天,他为什么在这样写?

以下是我的想法。

这里使用了代理模式,jquery.js存在$.cleanData这个方法,它的作用是删除对象或元素上的缓存,

var _cleanData = $.cleanData;
上面这句话是将jquery的原始方法代理到jqueryUI中,然后增加一些附加功能:

for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {$( elem ).triggerHandler( "remove" );}
这里进行了重写,因为jqueryUI有一个自定义的remove事件,先清除UI控件中绑定的remove那部分逻辑,再执行原始的jquery方法。