• jQuery中的事件监听小记


    一,一个事件监听的简便写法

    最近发现一个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事件列表。

    方法描述
    bind() 向匹配元素附加一个或更多事件处理器
    blur() 触发、或将函数绑定到指定元素的 blur 事件
    change() 触发、或将函数绑定到指定元素的 change 事件
    click() 触发、或将函数绑定到指定元素的 click 事件
    dblclick() 触发、或将函数绑定到指定元素的 double click 事件
    delegate() 向匹配元素的当前或未来的子元素附加一个或多个事件处理器
    die() 移除所有通过 live() 函数添加的事件处理程序。
    error() 触发、或将函数绑定到指定元素的 error 事件
    event.isDefaultPrevented() 返回 event 对象上是否调用了 event.preventDefault()。
    event.pageX 相对于文档左边缘的鼠标位置。
    event.pageY 相对于文档上边缘的鼠标位置。
    event.preventDefault() 阻止事件的默认动作。
    event.result 包含由被指定事件触发的事件处理器返回的最后一个值。
    event.target 触发该事件的 DOM 元素。
    event.timeStamp 该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。
    event.type 描述事件的类型。
    event.which 指示按了哪个键或按钮。
    focus() 触发、或将函数绑定到指定元素的 focus 事件
    keydown() 触发、或将函数绑定到指定元素的 key down 事件
    keypress() 触发、或将函数绑定到指定元素的 key press 事件
    keyup() 触发、或将函数绑定到指定元素的 key up 事件
    live() 为当前或未来的匹配元素添加一个或多个事件处理器
    load() 触发、或将函数绑定到指定元素的 load 事件
    mousedown() 触发、或将函数绑定到指定元素的 mouse down 事件
    mouseenter() 触发、或将函数绑定到指定元素的 mouse enter 事件
    mouseleave() 触发、或将函数绑定到指定元素的 mouse leave 事件
    mousemove() 触发、或将函数绑定到指定元素的 mouse move 事件
    mouseout() 触发、或将函数绑定到指定元素的 mouse out 事件
    mouseover() 触发、或将函数绑定到指定元素的 mouse over 事件
    mouseup() 触发、或将函数绑定到指定元素的 mouse up 事件
    one() 向匹配元素添加事件处理器。每个元素只能触发一次该处理器。
    ready() 文档就绪事件(当 HTML 文档就绪可用时)
    resize() 触发、或将函数绑定到指定元素的 resize 事件
    scroll() 触发、或将函数绑定到指定元素的 scroll 事件
    select() 触发、或将函数绑定到指定元素的 select 事件
    submit() 触发、或将函数绑定到指定元素的 submit 事件
    toggle() 绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。
    trigger() 所有匹配元素的指定事件
    triggerHandler() 第一个被匹配元素的指定事件
    unbind() 从匹配元素移除一个被添加的事件处理器
    undelegate() 从匹配元素移除一个被添加的事件处理器,现在或将来
    unload() 触发、或将函数绑定到指定元素的 unload 事件
  • 相关阅读:
    二线城市的创业人才之战
    小程序的风口到底如何?
    短视频广告一条上百万,揭秘短视频背后的故事
    让我们来看看这些企业的创始人,在互联网金融的十年里的故事
    背靠大树成为创业成功的显学
    草根站长的艰辛创业路
    互联网大佬们的创业重要选择时刻
    80后的罗敏已经在创业路上走了十几年
    CentOS7 通过 YUM 升级 VIM8
    matplotlib 画图中的basemap安装问题
  • 原文地址:https://www.cnblogs.com/benxiaohai-microcosm/p/8482933.html
Copyright © 2020-2023  润新知