深入学习jQuery事件对象

×

目录

[1]获取 [2]事件类型 [3]事件目标[4]当前元素[5]事件冒泡[6]默认行为[7]命名空间[8]返回值

前面的话

  在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。所有浏览器都支持event对象,但支持方式不同。jQuery在遵循W3C规范的情况下,对事件对象的常用属性进行了封装,使得事件处理在各个浏览器下都可以正常运行而不需要进行浏览器类型判断,本文将详细介绍jQuery事件对象

获取

  对于DOM事件对象来说,标准浏览器和IE8-浏览器的事件对象获取方式不一致。标准浏览器的事件对象是事件处理程序中的第一个参数,而IE8-浏览器的事件对象是直接使用event变量

  jQuery采用了标准写法,并兼容低版本IE浏览器

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;background:pink;"></div>
<script>
$(‘#box‘).click(function(event){
    $(this).html(event.type);
})
</script>

事件类型

  事件有很多类型,事件对象中的type属性表示被触发的事件的类型

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;background:pink;"></div>
<script>
$(‘#box‘).on(‘click mouseover mouseout‘,function(event){
    $(this).html(event.type);
})
</script>

事件目标

  事件目标target属性返回事件当前所在的节点,即正在执行的监听函数所绑定的那个节点

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<ul id="box">
    <li class="in">1</li>
    <li class="in">2</li>
</ul>
<script>
$(‘#box‘).on(‘mousemove‘,function(event){
    $(event.target).css(‘background-color‘,‘lightblue‘);
})
$(‘#box‘).on(‘mouseout‘,function(event){
    $(event.target).css(‘background-color‘,‘transparent‘);
})
</script>

当前元素

  currentTarget属性始终指向事件绑定的当前DOM元素,与this值始终相等

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<ul id="box">
    <li class="in">1</li>
    <li class="in">2</li>
</ul>
<script>
$(‘#box‘).on(‘mousemove‘,function(event){
    $(event.currentTarget).css(‘background-color‘,‘lightblue‘);
})
$(‘#box‘).on(‘mouseout‘,function(event){
    $(event.currentTarget).css(‘background-color‘,‘transparent‘);
})
</script>    

事件冒泡

  DOM事件流分为三个阶段:事件捕获、处于目标和事件冒泡,由于IE8-浏览器不支持事件捕获。jQuery也不支持事件捕获

stopPropagation()

  jQuery采用标准写法stopPropagation()来实现阻止事件冒泡

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<button id="btn1">按钮</button>
<button id="btn2">阻止冒泡</button>
<script>
$(‘#btn1‘).on(‘click‘,function(){
    alert(1);
});
$(document).on(‘click‘,function(){
    alert(0);
});
$(‘#btn2‘).on(‘click‘,function(event){
    event.stopPropagation();
    $(‘#btn1‘).on(‘click‘,function(event){
        event.stopPropagation();
    });
});
</script>

isPropagationStopped()

  event.isPropagationStopped()方法用来检测事件对象中是否调用过event.stopPropagation()

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height: 30px;background:lightblue"></div>
<script>
$(‘#box‘).click(function(event){
   alert(event.isPropagationStopped());//false
   event.stopPropagation();
   alert(event.isPropagationStopped());//true
});
</script>

stopImmediatePropagation()

  stopImmediatePropagation()方法不仅可以取消事件的进一步冒泡,而且可以阻止同一个事件的其他监听函数被调用

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<button id="btn1">按钮一</button>
<button id="btn2">按钮二</button>
<script>
$(‘#btn1‘).on(‘click‘,function(event){
    event.stopImmediatePropagation();
    alert(1);
});
$(‘#btn1‘).on(‘click‘,function(){
    alert(2);
});
$(‘#btn2‘).on(‘click‘,function(event){
    alert(1);
    event.stopPropagation();
});
$(‘#btn2‘).on(‘click‘,function(){
    alert(2);
});
$(document).on(‘click‘,function(){
    alert(0);
});
</script>

isImmediatePropagationStopped()

  event.isImmediatePropagationStopped()方法用来检测事件对象中是否调用过event.stopImmediatePropagation()

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height: 30px;background:lightblue"></div>
<script>
$(‘#box‘).click(function(event){
   alert(event.isImmediatePropagationStopped());//false
   event.stopImmediatePropagation();
   alert(event.isImmediatePropagationStopped());//true
});
</script>

默认行为

  jQuery使用event.preventDefault()方法来阻止默认行为

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height: 30px;background:lightblue"></div>
<script>
$(‘#box‘).contextmenu(function(event){
   event.preventDefault();
});
</script>

isDefaultPrevented()

  event.isDefaultPrevented()方法可以用来检测当前事件是否阻止默认事件

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height: 30px;background:lightblue"></div>
<script>
$(‘#box‘).contextmenu(function(event){
   alert(event.isDefaultPrevented());//false
   event.preventDefault();
   alert(event.isDefaultPrevented());//true
});
</script>

命名空间

  event.namespace属性返回事件的命名空间

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height: 30px;background:lightblue"></div>
<script>
$(‘#box‘).bind(‘test.abc‘,function(event){
  alert(event.namespace);//abc
});
$(‘#box‘).click(function(){
    $(‘#box‘).trigger(‘test.abc‘);
})
</script>

返回值

  event.result是事件被触发的一个事件处理程序的最后返回值

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height: 30px;background:lightblue"></div>
<script>
$(‘#box‘).click(function(event){
  return 123;
});
$(‘#box‘).click(function(event){
    $(‘#box‘).html(event.result);
})
</script>
时间: 2024-10-25 05:03:24

深入学习jQuery事件对象的相关文章

jQuery事件对象的属性和方法

jQuery事件对象的属性和方法 事件对象的属于与方法有很多,但是我们经常用的只有那么几个,这里我主要说下作用与区别 event.type:获取事件的类型 触发元素的事件类型 $("a").click(function(event) { alert(event.type); // "click"事件 }); event.pageX 和 event.pageY:获取鼠标当前相对于页面的坐标 通过这2个属性,可以确定元素在当前页面的坐标值,鼠标相对于文档的左边缘的位置(

jQuery事件对象的作用

jQuery事件对象的作用 事件中的Event对象容易被初学者忽略掉,可能大多时候初学者不知道怎么去用它,但有些时候它还是非常有用的 一个标准的"click"点击事件 $(elem).on("click",function(event){ event //事件对象 }) 在不同浏览器之间事件对象的获取, 以及事件对象的属性都有差异.jQuery根据 W3C 标准规范了事件对象,所以在jQuery事件回调方法中获取到的事件对象是经过兼容后处理过的一个标准的跨浏览器对象

html学习 - jquery事件监听详解

html学习 - jquery事件监听详解 html学习 - jquery事件监听详解 监听方法 监听方法参数解释 click参数 事件自动执行问题解决 bind方法 live方法 监听方法 在jquery里,监听的方法比较多,用的最多的就是简单的.click() .onchange() .pressdown() 所以这样很简单啊,直接使用就好了,只要符合参数规范就可以了.除了这个还有bind() live() 方法. 而addEventListener()同bind()方法是没有很大功能上的区

jQuery事件对象的作用(利用冒泡事件优化)

事件中的Event对象容易被初学者忽略掉,可能大多时候初学者不知道怎么去用它,但有些时候它还是非常有用的 一个标准的"click"点击事件 $(elem).on("click",function(event){ event //事件对象 }) 在不同浏览器之间事件对象的获取, 以及事件对象的属性都有差异.jQuery根据 W3C 标准规范了事件对象,所以在jQuery事件回调方法中获取到的事件对象是经过兼容后处理过的一个标准的跨浏览器对象 这里不在千篇一律的说方法的

深入学习jQuery事件绑定

× 目录 [1]bind [2]trigger [3]delegate[4]on[5]one 前面的话 javascript有HTML.DOM0级.DOM2级和IE这四种事件处理程序,而jQuery对这四种事件处理程序进行了兼容处理,以更简单的方式就可以实现事件绑定.本文将详细介绍jQuery事件绑定 bind() bind()方法为一个元素绑定事件处理程序,有以下3种使用方法 bind(eventType[,eventData],handler(eventObject)) bind()方法可以

jQuery 事件对象

JavaScript 在事件处理函数中默认传递了 event 对象,也就是事件对象.但由于浏览器 的兼容性,开发者总是会做兼容方面的处理.jQuery 在封装的时候,解决了这些问题,并且 还创建了一些非常好用的属性和方法 一.事件对象 事件对象就是 event 对象,通过处理函数默认传递接受.之前处理函数的 e 就是 event 事件对象,event 对象有很多可用的属性和方法,我们在 JavaScript 课程中已经详细的了解 过这些常用的属性和方法,这里,我们再演示一次. //通过处理函数传

jQuery 事件对象的属性和方法

event.pageX 和 event.pageY:获取鼠标当前相对于页面的坐标 通过这 2 个属性,可以确定元素在当前页面的坐标值,鼠标相对于文档的左边缘的位置(左边)与 (顶边)的距离,简单来说是从页面左上角开始, 即是以页面为参考点, 不随滑动条移动而变化 event.preventDefault() 方法:阻止默认行为 这个用的特别多,在执行这个方法后,如果点击一个链接(a 标签),浏览器不会跳转到新的 URL 去了.我们可以用 event.isDefaultPrevented() 来确

220 jQuery 事件对象

? jQuery 对DOM中的事件对象 event 进行了封装,兼容性更好,获取更方便,使用变化不大.事件被触发,就会有事件对象的产生. 语法 演示代码 <body> <div></div> <script> $(function() { $(document).on("click", function() { console.log("点击了document"); }) $("div").on(&

jQuery事件对象

1.event.currentTarget 事件的监听者2.event.target 事件的目标3.event.delegateTarget 绑定了当前正在调用jQuery事件处理器的(当前事件的委托者)4.event.pageX 鼠标相对于文档左边缘的位置5.event.pageY 鼠标相对于文档上边缘的位置6.event.type 获取当前的事件类型7.event.preventDefault() 阻止默认事件8.event.stopPropagation() 阻止冒泡事件