第二个绑定的事件减少了一个,每绑定一个事件,内存都会多笔开销的
//相对的再稍优化一下,会更好.就不会当this.id=='default'时,总是要先解绑,然后又再次绑定了
$('#switch button').click(function(){
$('#switch')[this.id=='default' ? 'bind' : 'unbind']('click',togglea);
})
//相对的再稍优化一下,会更好.就不会当this.id=='default'时,总是要先解绑,然后又再次绑定了
$('#switch button').click(function(){
$('#switch')[this.id=='default' ? 'bind' : 'unbind']('click',togglea);
})
解决方案 »
- 请问ie6下报错Internet Explorer cannot open the Internet site怎样解决
- 急求一个带农历的时间输入框
- 怎么写这个递归函数
- 请问有没有可能无论当前用什么浏览器在看网页,弹出的网页都用IE打开?
- 这个正则表达式是什么意思呀
- 求救,关于图片文件大小(两贴合并共70分)!!!
- focus如何停在相应的焦点。。
- 请问大家如何控制不让页面执行“后退”操作,即用户点击工具栏上的“后退”按钮时页面并不后退,谢谢
- 如何在网页中自动加载一个Ocx控件?(up有分,在线等待)
- javascript问题
- 熟悉js,了解fireBug的朋友请进,请教【混杂】页面中selectedIndex值用js修改不成功的问题。
- 为什么在jquery插件的官网上下载不到jquery.metadata.js?
第一个: 父 id="switch" 事件常在。
无论点那个button,都会冒到switch. 1个子事件。第二个:
只有点到this.id=='default',才把事件绑上,然后,靠冒泡冒上去。
因为 父 id="switch" 事件没了,所以,冒上去是空的。但同时也加了3个子事件。
总说来,他冒上去也没什么
$.event.dispatch -> 把event变$.Event 然后分析queue 其实这也不费劲。所以第二个好吗?
第二个 随着button增加而增加。
$(function(){
var togglea=function(event){
if(!$(event.target).is('button')){
$('#switch button').toggleClass('select');
}else if($(event.target).attr('id')!='default'){
$('#switch').unbind('click',togglea);
}
};
$('#default').click(function(){
$('#switch').bind('click',togglea);
}).trigger('click');
})
他那2段代码,我个人觉的都不好。
至于代理好,还是绑定好,没几十个,说也没意义。至于说第二个好,是那父事件没了(只有 id="switch" 才存在),它冒上去时,没有函数要处理,所以就省了一些处理的东西(主要是jQuery那包装,也就是到你那个函数之前要封装的一些东西)。但如果,#narrow 还其他onclick事件,那就第一个好。