一,一个事件监听的简便写法
最近发现一个jQuery中事件监听的简洁写法,感觉方便好多。同时也深感自己基础薄弱,好多东西竟然都模棱两可。因此,记录的同时,也对jQuery事件监听做个小的总结
原文链接:http://blog.csdn.net/luyinchangdejiqing/article/details/52413368
//鼠标拖拽触发动画 $(".item-wrap").on({ mousedown: function(e) { var el = $(this); var os = el.offset(); dy1 = e.pageY - os.top; }, mouseup: function(e) { var el = $(this); var os = el.offset(); dy2 = e.pageY - os.top; //停止拖拽事件 $(document).off('mousemove.drag');// 根据鼠标拖动的方向触发响应动画 var moveDistance=dy1-dy2; if (moveDistance>0) { //鼠标向下拖动 direction = 'down'; downNum++; if(downNum >= 5) { downNum = 0; } } else{ //鼠标向上拖动 direction = 'up'; upNum++; if(upNum >= 5) { upNum = 0; } }; sumDistance = 0; scroll(direction); } });
总结一下就是,当同一个元素需要监听多个事件时,我们可以使用json对象的形式把所有事件和事件的处理函数一并传给on监听。我们回忆下最原始的写法是:
$('a').on('click',function(){ //code goes there})
这里事件和事件的处理函数是一一对应的关系。如何把多个一一对应的东西联系在一起呢,很容易想到的就是json,它的每个键值对都是一一对应的。举个例子:
{ 'name1':'value1', 'name2':'value2', 'name3':'value3'}
把它用到刚刚的a标签的事件监听上:
$('a').on({ click: function() {alert('click')}, mouseover: function() {alert('mouseover')}, dbclick: function() {alert('dbclick')}})
不知道以前用没用过,其实jQuery的css设置也可以这样使用:
$('a').css('color','red');$('a').css({ 'display':'inline-block', 'padding':'20px', 'background-color':'yellow'});
二,jQuery事件监听总结
第一种,事件就是方法:直接可以在元素上使用具体的方法来绑定事件的回调,这种,是一一对应的,一次对应一个事件。
$("input").blur(function(){ $("input").css("background-color","#D6D6FF");});
第二种,一次可以附加一个或者多个事件处理器。比如上文提到的on,除此之外还有bind。
其他目前还不清楚,等知道了再慢慢添加。
附:jQuery事件列表。
方法 | 描述 |
---|---|
向匹配元素附加一个或更多事件处理器 | |
触发、或将函数绑定到指定元素的 blur 事件 | |
触发、或将函数绑定到指定元素的 change 事件 | |
触发、或将函数绑定到指定元素的 click 事件 | |
触发、或将函数绑定到指定元素的 double click 事件 | |
向匹配元素的当前或未来的子元素附加一个或多个事件处理器 | |
移除所有通过 live() 函数添加的事件处理程序。 | |
触发、或将函数绑定到指定元素的 error 事件 | |
返回 event 对象上是否调用了 event.preventDefault()。 | |
相对于文档左边缘的鼠标位置。 | |
相对于文档上边缘的鼠标位置。 | |
阻止事件的默认动作。 | |
包含由被指定事件触发的事件处理器返回的最后一个值。 | |
触发该事件的 DOM 元素。 | |
该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。 | |
描述事件的类型。 | |
指示按了哪个键或按钮。 | |
触发、或将函数绑定到指定元素的 focus 事件 | |
触发、或将函数绑定到指定元素的 key down 事件 | |
触发、或将函数绑定到指定元素的 key press 事件 | |
触发、或将函数绑定到指定元素的 key up 事件 | |
为当前或未来的匹配元素添加一个或多个事件处理器 | |
触发、或将函数绑定到指定元素的 load 事件 | |
触发、或将函数绑定到指定元素的 mouse down 事件 | |
触发、或将函数绑定到指定元素的 mouse enter 事件 | |
触发、或将函数绑定到指定元素的 mouse leave 事件 | |
触发、或将函数绑定到指定元素的 mouse move 事件 | |
触发、或将函数绑定到指定元素的 mouse out 事件 | |
触发、或将函数绑定到指定元素的 mouse over 事件 | |
触发、或将函数绑定到指定元素的 mouse up 事件 | |
向匹配元素添加事件处理器。每个元素只能触发一次该处理器。 | |
文档就绪事件(当 HTML 文档就绪可用时) | |
触发、或将函数绑定到指定元素的 resize 事件 | |
触发、或将函数绑定到指定元素的 scroll 事件 | |
触发、或将函数绑定到指定元素的 select 事件 | |
触发、或将函数绑定到指定元素的 submit 事件 | |
绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。 | |
所有匹配元素的指定事件 | |
第一个被匹配元素的指定事件 | |
从匹配元素移除一个被添加的事件处理器 | |
从匹配元素移除一个被添加的事件处理器,现在或将来 | |
触发、或将函数绑定到指定元素的 unload 事件 |