制作jquery插件2-滚轮事件的插件
来源:互联网 发布:华为云计算岗位及年薪 编辑:程序博客网 时间:2024/06/08 14:58
在上一小节中我们使用jquery.fn.extend为jquery新增了两个新的方法,这一节来制作滚轮事件的插件。
1.准备好已经做好兼容的滚轮事件函数:
function mousewheel(obj,fnWheel){ if (obj.addEventListener){ obj.addEventListener("DOMMouseScroll",fn,false); } if (obj.attachEvent){ obj.attachEvent("onmousewheel",fn); }; obj.onmousewheel=fn; function fn(ev){ var oEvent=ev||event; var down=true; if (oEvent.wheelDelta){ down=oEvent.wheelDelta<0; } else{ down=oEvent.detail>0; }; fnWheel(down,oEvent); if (oEvent.preventDefault){ oEvent.preventDefault(); }; return false; }; };
2.在原函数里绑定事件的对象是作为参数传过去的,在extend里可以用$(this)代替调用该方法的对象,但因为要调用的原生的方法,所以需要转化一下:
$.fn.extend({ mousewheel:function (fnWheel){ if ($(this).get(0).addEventListener){ $(this).get(0).addEventListener("DOMMouseScroll",fn,false); } if ($(this).get(0).attachEvent){ $(this).get(0).attachEvent("onmousewheel",fn); }; $(this).get(0).onmousewheel=fn; function fn(ev){ var oEvent=ev||window.event; var down=true; if (oEvent.wheelDelta){ down=oEvent.wheelDelta<0; } else{ down=oEvent.detail>0; }; fnWheel(oEvent,down); if (oEvent.preventDefault){ oEvent.preventDefault(); }; return false; }; }});
3.现在这个插件还有一个问题,就是如果在前台调用this的时候指向不对,原因就在于回调函数fnWheel是window调用的,可以使用call方法改变this的指向:
最终代码:
$.fn.extend({ mousewheel:function (fnWheel){ if ($(this).get(0).addEventListener){ $(this).get(0).addEventListener("DOMMouseScroll",fn,false); } if ($(this).get(0).attachEvent){ $(this).get(0).attachEvent("onmousewheel",fn); }; $(this).get(0).onmousewheel=fn; function fn(ev){ var oEvent=ev||window.event; var down=true; if (oEvent.wheelDelta){ down=oEvent.wheelDelta<0; } else{ down=oEvent.detail>0; }; fnWheel.call(this,oEvent,down); if (oEvent.preventDefault){ oEvent.preventDefault(); }; return false; }; }});
在前台调用该插件例子:
<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style type="text/css">#div1{ height: 500px; width: 500px; background-color: #ccc;}</style><script type="text/javascript" src="jquery-1.11.0.js"></script><script type="text/javascript" src="extend-mouseWheel.js"></script><script type="text/javascript">$(function (){ $("#div1").mousewheel(function (event,down){ alert(this.tagName);//弹出DIV });});</script></head><body><div id="div1"></div></body></html>
阅读全文
0 0
- 制作jquery插件2-滚轮事件的插件
- jquery的鼠标滚轮插件 Mousewheel响应跨浏览器的鼠标滚轮事件
- jquery的鼠标滚轮插件 Mousewheel响应跨浏览器的鼠标滚轮事件
- jQuery 鼠标滚轮插件 mousewheel
- 鼠标滚轮插件jQuery mousewheel
- jQuery 鼠标滚轮插件 mousewheel
- jquery的动画插件制作
- 制作基本的jQuery插件
- 制作jQuery插件
- jquery插件制作
- jquery插件制作进度条
- jquery全选插件制作
- 自己制作jQuery插件
- [边学边用]jquery插件制作
- jQuery制作分页插件
- 制作简易Jquery插件
- Jquery日历插件制作
- jquery表格树插件的制作过程
- 菜鸟笔记-微信分享突然失效的解决
- javascript的历史
- jquery.easing的使用
- CUDA编程——矩阵乘法的串行和两种并行实现
- 制作jquery插件1-基础
- 制作jquery插件2-滚轮事件的插件
- 使用border-radius绘制椭圆
- Pairwise Sum and Divide
- SPS/PPS/IDR
- 产品经理进阶:如何用UML的顺序图表达思想?
- 字母反转
- Oracle中的几个概念
- mysql概括
- 《推荐系统实践》笔记--第一章:好的推荐系统