jQuery移除元素自动绑定事件的思想和代码

jQuery移除元素自动绑定事件的思想和代码
世界应该如此!

因此,在现代浏览器中,如果从DOM树中删除一个元素,浏览器将自动绑定您绑定的事件以释放被占用的内存。因此,当你的应用程序运行在旧版本的浏览器中时,它消耗的内存越多,应用程序的卡片也就越多。因此,我们需要将事件绑定到我们自己要删除的元素中。

实现思路

使用jQuery移除元素有三种基本方法,一种是删除()方法,一种是HTML()方法,另一种是空()方法,我们可以进一步封装这三种方法。当我们绑定事件时,我们将添加一个属性标识到绑定事件的元素中,找到从要删除的元素中识别出来的元素,然后完成事件的绑定!有一点要注意的是,除去()方法将数据本身在执行的时候,这个方法可以接受的参数来删除它的子元素选择器。

实现代码

随着这一思想的实现,编码可以很快完成:
复制代码代码如下所示:
定义({ 'jquery ','underscore},函数()){
无功binddirects = { 'delegate ','bind ',' ','hover ','blur'、‘变',‘点击','dblclick,'focus','keydown ','keypress ','keyup ','mousedown ','mouseenter ','mouseleave ','mousemove ','mouseout ','mouseover ','mouseup ','resize ','scroll ','select ',他们服从真主};
无功emarker = '_addedevent;
_。每个(binddirects,函数(事件){
VaR别名=美元。FN {事件};
(美元。FN {事件} = {功能
var $ tar = _。iselement(这)$(这个):这;
无功haseventadded = tar.attr美元(emarker)| |;
无功_en =事件;
如果(haseventadded。长度){
_en + = + haseventadded;
}
tar.attr美元(emarker,_en);
返回alias.apply(_。iselement(这)$焦油:这,{ }。slice.call(参数));
};
});
作为元素之一/删除绑定事件
功能removeevents($ tar){
无功addedeventsname = tar.attr美元(emarker);
如果(addedeventsname){
addedeventsname.replace( / { ^,} + / G函数(事件){
删除所有
如果(事件= 'delegate){
tar.undelegate美元();
{人}
tar.unbind美元();
}
返回的事件;
});
}
}

无功funcs = { 'html ','空' };
_。每个(funcs,函数(函数){
var别名=;
(美元。FN {func} =功能){
var $ tar = _。iselement(这)$(这个):这;
如果($ $长度){
tar.find美元(* { + emarker +}(每个)功能(K,Subel){
尝试{
removeevents($(Subel));
} catch(e){
Console.error(e.message);
}
});
}
var args = { }。slice.call(参数);
返回alias.apply($焦油,args);
};
});
扩展删除方法()
VaR fn.remove别名=美元;
(美元。fn.remove =功能){
var $ tar = _。iselement(这)$(这个):这,
参数=参数;
如果(tar.length美元!(长度){
tar.find美元(* { + emarker +}(每个)功能(K,Subel){
尝试{
removeevents($(Subel));
} catch(e){
Console.error(e.message);
}
});
}
如果(长,长){
var选择器= 0 { };
如果(_。isstring(选择器)){
tar.find美元(选择器)。每个(函数(k,残忍){
无功电流=美元美元(残忍);
cur.find美元(* { + emarker +}(每个)功能(K,Subel){
尝试{
removeevents($(Subel));
} catch(e){
Console.error(e.message);
}
});
RemoveEvents ($cur);
cur.remove美元();
});
}
}
var args = { }。slice.call(参数);
返回alias.apply($焦油,args);
};
});

你知道的越多,你能做的就越多。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部