美文网首页
jQuery事件

jQuery事件

作者: 爱琴宝 | 来源:发表于2016-09-12 17:56 被阅读0次

使用jQ绑定事件
bind()方法和unbind() 在3.0的时候已被移除,尽量减少使用。或者不用。
通过DOM添加事件不会被覆盖:
通过DOM的addEventListener添加事件可以多次添加,不会被覆盖

 var div = document.getElementById('div');
 div.addEventListener('click',function(){
 alert('一次')
 });
 div.addEventListener('click',function(){
 alert('二次')
 });

绑定与移除事件:
on()绑定事件;off()移除事件:one()绑定方法只能触发一次;on绑定的事件不受one的影响;
添加事件:.on()方法 事件事件函数可以多次触发.

 $('div').on('click',function(){
 alert('加波关注啊');
 });
 //事件的移除。 
 $('div').off('click');
 //one();通过one绑定的事件只能触发一次(one绑定的函数只能触发一次);添加一次性事件
 $('button').one('click',function(){
 alert('你猜');
 });
 //on绑定的事件函数不受one事件绑定的影响。
 $('button').on('click',function(){
 alert('我出来了')
 });```

on可以同时绑定多个事件:

在匿名函数中,填写一个参数名,这个参数名就是事件对象event;
// 同时绑定多个事件
$('.div1').on('mouseover dblclick', function (event) { //同时给类名为div1的对象绑定了mouseover和dblclick事件
console.log(event.type);
});```
off()移除事件:

可以同时移除所有的事件,也可以移除指定事件如果是多个,中间用逗号隔开;
 // 移除事件
 // $('.div1').off(); // 移除所有事件
 $('.div1').off('dblclick mouseover'); // off() 函数可以有参数,移除指定事件,如果是多个,中间用空格隔开

复合事件:
.hover()方法:


 *复合事件:。hover()事件
 * mouseenter 和 mouseover:over是鼠标滑过标签触发的时间。enter是鼠标移入标签就会触发的时间。
 * 
 * */
 $('div').hover(function(){
 $(this).css("background","red");
 },
 function(){
 $(this).css("background","blue");
 });
*/```
事件的获取(事件对象):

事件类型:event.type;
```/*
*type:获取当前触发的事件类型。
 */
$('div').mousemove(function(event){
 console.log(event.type);
 });

例:查看事件的类型;

 $('.div1').on('mouseover mouseout', function (event) {
 if (event.type == 'mouseover') {
 $(this).css('background-color', 'black');
 } else {
 $(this).css('background-color', 'red');
 }
 });```
target 与currentTarget:

target:触发事件的元素;currentTarget:响应事件的元素:
/*
*target:当前点击的标签元素 ; 事件的执行。

  • currentTarget:是保存的是事件绑定的对象。(相应的事件对象)事件的响应者
  • */
    $('body').click(function(event){
    //console.log(event.target); 当点击的是div、的时候,打印的是div 当前点击的是谁 target就代表谁。
    console.log(event.currentTarget); 事件有谁触发 currentTarget就代表谁
    });```
    事件的坐标:
    pageX;pageY;clientX;clientY;offsetX;offsetY;screenX;screenY;
 $('body').click(function(event){
 console.log(event.pageX); 
 *pageX, pageY:包括具有滚动条的宽度和高度;(页面);
 console.log(event.pageY);
 console.log(event.clientX);
    *clientX,clientY: 可视区域的宽度和高度;
 console.log(event.clientY);
 console.log(event.offsetX);
    *offsetX,offsetY:不包含margin;(说白了就是margin的问题);
 console.log(event.offsetY);
 console.log(event.screenX);
    *screenX;screenY:相对于屏幕的左上角点;
 console.log(event.screenY);
 });

取消默认事件: event.preventDefault();

<script type="text/javascript">
 //取消标签的默认行为(事件)
 //event.preventDefault();阻止默认行为。
 $(document).ready(function(){
 $('a').click(function(event){
 event.preventDefault(); //阻止超链接a 
 })```
事件冒泡:event.stopPropagation();

<script type="text/javascript">
$(document).ready(function(){
//事件冒泡 从里往外传。
/*触发子标签的某一个事件,js引擎会把这个事件传递到父级标签,一直传递到document,如果在这个传递链中也有这个事件,该事件也会被触发。利用事件冒泡我们可以实现 事件委托及代理

  • 阻止事件的冒泡event.stopPropagartion();阻止在传递链中触发事件。
  • */
    //触发子标签的时候依次触发到父标签
    $('#div1').click(function(){
    alert("1");
    });
    $('#div2').click(function(){
    alert("2");
    });
    //阻止事件的冒泡
    $('#div3').click(function(event){
    alert("3");
    event.stopPropagation();
    });
    });```
    模拟事件:trigger;triggerHandle;不通过用户触发事件,自动会触发事件,一般用不到。可以利用定时器去弹。用户的体验会更好。
<script type="text/javascript">
 $(document).ready(function(){
 /*
 *事件模拟:不通过用户触发事件,但事件依然可以触发。
 * */
 //链式语法:(.)把一组操作用点语法来操作
 $('#div').click(function(){
 alert("加波关注啊?")
 }).click();
 //$('#div').trigger('click');
 //$('#div').triggerHandler('click');
 //trigger,triggerHandler 都可以模拟事件的执行,triggerHandler不会触发标签的默认事件。
 //trigger可以执行默认的事件的实行。triggerHandler 不执行默认事件的执行。
 $('form').trigger('submit');
 $('form').triggerHandler('submit');
 });```
命名空间; 给事件添加一个新的名字,使用点(.)分割。这样在移除事件的时候可以通过新添加 的名字进行移除;

$(document).ready(function(){
//命名空间:在事件名后在添加新的名字,用点分割。这样通过后缀名字把相同事件不同方法区分开。方便对事件的管理
$('button').on('click.tel',function(){
alert("加油?")
})
$('button').on('click',function(){
$('button').css('background',"red");
});
//解绑事件时,就可以通过命名空间添加的新名字进行解绑。不影响其他相同的事件
$('button').off('.tel');
})
</script>```
事件委托:本该自身的事件添加在父元素的身上(只能添加在父子元素上。)(利用的是事件冒泡);

 // 使用JQ实现代理设计模式
 $('ul').on('click', 'li', function () {
 // this == li
 $('<li></li>').html(this.innerHTML).appendTo('ul');
 console.log(event.target); 
 console。log(event.currentTarget); 指的都是li
 });
 // 代码是把事件绑定到ul身上的,但是是li委托的,实际触发事件的是li对象,所有函数内部的this是li对象
 // ul作为li的代理,帮li做事
 // li把事件委托给ul,让ul做事```
自定义事件:
自定义一个事件,并给事件添加一个函数 ,最后使用element.trigger();来调用;

<script type="text/javascript">
//自定义事件只能通过trigger来调用
$('div').on('hhaha',function(){
alert("努力学习吧")
});
$('div').trigger('hhaha');
</script>

窗口事件:

调整窗口大小事件:
<script type="text/javascript">
$(document).ready(function(){
//窗口大小改变时触发的事件
$(window).resize(function(){
console.log("窗口改变时,会打印出来");
});
//窗口滚动事件
$(document).scroll(function(){
console.log("窗口滚动时发生的触发的事件");
});
});
</script>```

相关文章

  • 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/vuwpettx.html