美文网首页
jQuery事件

jQuery事件

作者: 清心挽风 | 来源:发表于2017-09-05 20:08 被阅读0次

一、基础事件

1、绑定事件

bind();
参数一:要绑定事件函数的事件名。
参数二:要绑定的事件函数(事件函数名),如果将来有可能删除该绑定的函数,则必须传函数名。
bind()方法可以通过链式调用的形式连续多次调用,进而个同一标签的同一事件(不同事件)添加不同的事件函数。
on('事件名',fn);
one('事件名',fn);该方法绑定的事件函数只能被触发一次。

2、解除事件

unbind();
参数一:要解绑事件函数的事件名(如果只传这一个参数,则该事件名中绑定的函数全部解除)。
参数二:要解除绑定的事件函数名。
off();

注意:bind()和unbind()在3.0后已经被on()和off()取代。

$('button').bind('click',hello);
$('button').unbind('click',hello);
                
3.0后提倡的方法:on off
$('button').on('click',hello).on('click',bye);
解除事件绑定,解除很多方法都可以用这个方法
$('button').off('click');

one()方法绑定的事件函数只能被触发一次
$('button').one('click',hello);
 $('button').off('click');
3、简写事件

事件简写本质就是简化给标签添加事件函数的操作,标准的添加事件方法:on/bind/one,类似于js的DOM2级添加事件函数操作;事件简写类似于DOM0级的事件绑定操作。

jq事件简写绑定事件函数的技术实现原理:
1、jq给每一个事件名定义了同名的函数,用户调用的事件简写形式,就是在调用这个和事件名同名的函数
2、同名函数内部实现原理:当用户调用了该函数,首先获取该函数的函数名(函数名代表的是事件名),在函数内部通过on把通过参数传进来的函数绑定在函数名对应的事件上。

blur(fn):失去焦点时触发该方法。
focus(fn):当鼠标或tab按钮让元素获得焦点时,触发该函数。
change(fn):表单元素失去焦点(单选框、复选框、下拉菜单标签被选中即可触发,不需等待失去焦点),触发该事件。
click(fn):鼠标点击时触发该事件。
dbclick(fn):双击元素时触发该事件(注意:把click和dbclick用于同一个元素会产生问题)。
$(window).scroll(fn):当页面滚动时触发事件。

function hello(){
                    alert('hello');
                }
$('button').click(hello);
                $('button').click(function(){
                    alert('bye')
                });
                $('button').off('click');
4、复合事件

hover(fn1,fn2):鼠标移入触发fn1函数,鼠标移出触发fn2函数。

$('div').hover(function(){
                    $(this).css('background','red')
                },function(){
                    $(this).css('background','green')
                });

复合事件:toggle().在1.8之前中,复合了奇、偶次点击事件,在1.9之后的版本中toggle方法用于jq的动画
toggle()方法在1.8之前的版本中需要两个函数类型作为参数,奇数次点击触发第一个函数,偶数次店家触发第二个函数。

                $('#div').toggle(function(){
                    $(this).css('background','red')
                },function(){
                    $(this).css('background','green')
                });

二、事件对象

事件对象的获取:在事件触发的函数中传递event参数。

事件对象的常用属性:

event.type:事件类型
event.target:触发事件的元素
e.currentTarget:事件绑定在哪个元素上
event.pageX:鼠标相对于文档的左侧坐标
event.pageY:鼠标相对于文档的顶部坐标
e.preventDefault():取消标签事件,如a标签的页面跳转。
e.stopPropagation():阻止事件冒泡

$('#div').click(function(event) {
// 通过jq获取到的事件对象和js获取到的事件对象所具备的属性基本一致。
console.log(event);

// 在jq事件体系中target属性保存的是触发该事件的标签;currentTarget属性保存的是响应(触发了事件函数)的标签
console.log(event.target);
console.log(event.currentTarget);

// 在js事件体系中,target属性保存的是触发该事件的标签,currentTarget属性永远为null
 });
事件的冒泡以及默认行为的处理

1、阻止事件冒泡
stopPropagation()方法
2、阻止默认行为
preventDefault()方法
注意:1、return false 在jQuery中是即阻止事件冒泡又阻止默认行为
   2、jQuery不支持事件捕获

jQuery高级事件

window.onload = function () {
                /*
                var btnArr = document.querySelectorAll('.btn');

                for (var i = 0; i < btnArr.length; i ++) {
                    btnArr[i].num = i+1;
                    btnArr[i].onclick = function () {
                        alert('这是第' + this.num + '个按钮');
                    }
                }
                */

               /*
                var btnArr = document.querySelectorAll('.btn');

               for (var i = 0; i < btnArr.length; i++) {
                   // var count = i + 1
                   btnArr[i].id =  i+1;
               }

               // 使用Js事件委托实现功能
               var divTag = document.querySelector('#div');
               divTag.onclick = function (ev) {
                   var e = event || ev;
                //    console.log(e.target.id);
                alert('当前是第' + e.target.id + '个按钮')

               }

               */

            //   $('.btn').each(function(index, el) {
            //         this.id = index + 1;
            //   });

                // 通过jq实现事件委托
                /*
                $('#div').click(function(event) {
                    alert('当前触发的是第' + event.target.id + '个按钮')
                });
                */

        /*
                $('#div').on('click', function (event) {
                    // index()该方法是jq体系中的方法,通过该方法可以获取到调用者在
他的兄弟标签中的下标
                    var count = $(event.target).index() + 1;
                    alert('当前选择的是第' + count + '个按钮');
                });
*/

            // on()方法中的第二个参数可以传递选择器
            // 在事件委托中,通过父标签响应子标签的事件时,只有被选择器匹配的
标签触发的事件,才能触发执行父标签的事件函数;如果触发事件的子标签并没
有被选择器匹配,则父标签的事件函数不会执行。

            $('#div').on('click', '.btn', function(event) {
                alert('当前是第' + $(event.target).index()+'个按钮');
            })

            }

解密jQuery事件核心:http://www.cnblogs.com/aaronjs/p/3444874.html

相关文章

  • jquery实战

    jQuery属性操作 jQuery特殊效果 jQuery动画 jQuery循环 jQuery其他事件 自定义事件

  • jQuery知识整理

    jQuery jQuery和DOM关系 jquery框架对象分析 加载事件 事件绑定 动画效果 jquery封装的...

  • jqurey事件

    jQuery 事件函数 jQuery 事件处理方法是 jQuery 中的核心函数。 事件处理程序指的是当 HTML...

  • jQuery基础(三)—事件篇-----鼠标事件

    jQuery鼠标事件之click与dbclick事件jQuery鼠标事件之mouseover与mouseout事件...

  • jQuery动画、循环、事件

    jQuery动画 jQuery循环 元素绝对位置 鼠标移入移出 jQuery事件 自定义事件 事件冒泡 弹框-阻止冒泡

  • Jquery day_3

    1.1 Jquery 事件注册 1.2 jquery 事件处理 on(): 用于事件绑定,目前最好用的事件绑定方...

  • jQuery事件操作和插件

    jQuery事件操作 简单方式注册事件 语法:jQuery对象.事件名(事件处理程序) on方法注册事件 注册简单...

  • jquery对节点的操作

    Jquery对事件的绑定 $().bind(“事件类型”, 事件处理); 给jquery绑定一个事件$().bi...

  • jQuery事件机制

    jQuery的事件机制,指的是:jQuery对JavaScript操作DOM事件的封装,包括了:事件绑定、事件解绑...

  • jquery 滚轮插件 jquery.mousewheel.js

    jquery.mousewheel插件使用 jquery中没有鼠标滚轮事件,那么可以使用jquery的滚轮事件插件...

网友评论

      本文标题:jQuery事件

      本文链接:https://www.haomeiwen.com/subject/ztlpjxtx.html