读书笔记:自定义事件和jQuery插件
来源:互联网 发布:nc.exe windows下载 编辑:程序博客网 时间:2024/06/09 19:31
----摘自《基于MVC的Javascript Web富应用开发》
html代码:
<ul id="tabs"><li data-tab="users">Users</li><li data-tab="groups">Groups</li></ul><div id="tabsContent"><div data-tab="users">....</div><div data-tab="groups">....</div></div>
最直接的使用事件触发方式:
jQuery.fn.tabs=function(control){ var element=$(this); control=$(control); element.find("li").bind("click",function(){ //首先把所有li中的active属性删除.改变li element.find("li").removeClass("active"); $(this).addClass("active"); //内容项的改变 var tabName=$(this).attr("data-tab"); control.find(">[data-tab]").removeClass("active"); control.find(">[data-tab="+tabName+"]").addClass("active"); }); //激活第一个选项卡 element.find("li:first").addClass("active"); //返回this return this; }
1.会为每个li添加click事件,从而造成浪费,可以使用delegate改变
2.引发的内容改变,繁杂,而且不利于,其它模块儿的调用
改变调用模式,使得更加解隅;
jQuery.fn.tabs=function(control){var element=$(this);control=$(control);//首先定义绑定事件 //首先是变化lielement.bind("change.tabs",function(e,tabName){ element.find("li").removeClass("active"); element.find(">[data-tab='"+tabName+"']").addClass("active");});// 其次内容变化element.bind("change.tabs",function(e,tabName){ element.find(">[data-tab]").removeClass("active"); element.find(">[data-tab='"+tabName+"']").addClass("active");}) //其次,在要绑定,要引发的事件类型 element.delegate("li","click",function(){ var tabName=$(this).attr("data-tab"); element.trigger("change.tabs",tabName); }); //激活第一个选项卡 element.find("li:first").addClass("active"); //返回this return this;}把click事件与该事件引发的反应,分开。从而思路更加清晰
这个模式也称为订阅/发布模式,我觉的就是被动和主动模式。首先要做好准备,等待被xxx(bind绑定),然后可能会有多个人收到页面的事件例如click,就会主动去XXXX(trriger触发)
- 读书笔记:自定义事件和jQuery插件
- 自定义事件和jQuery插件
- js自定义事件和jQuery自定义事件
- jQuery自定义事件和jQuery.extend
- jQuery自定义事件和jQuery.extend
- [ jQuery ] jquery 自定义插件!
- [原创]修改jquery.slideBox.js插件,自定义部分事件
- jquery 常用事件添加方式和自定义事件
- 《锋利的jQuery》读书笔记第四章(事件和动画)
- jQuery插件 粘贴事件
- jQuery基础----06jQuery选择器和事件-事件之自定义事件
- jquery 自定义插件开发
- 自定义jQuery插件
- jquery自定义插件
- jQuery 自定义插件
- jquery 自定义插件开发
- jquery自定义插件
- jquery 自定义插件小结
- jquery validate(1) : 将校验规则写到控件中
- WPF编译器错误 CS1566 g.resources出错的终极解决
- 保护模式下 8259A芯片编程及中断处理探究(上)【1】
- C++ VC socket 文件下载 简单
- Features of C99
- 读书笔记:自定义事件和jQuery插件
- hdu 1301 Jungle Roads
- 全屏游戏切换至窗口化
- Android 获取wifi状态
- C/S与B/S
- Ubuntu 12.10 root用户登录没有声音
- 《Rework》摘录及感想
- rqnoj-160
- 进程与线程的一个简单解释