jQuery事件

使用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>```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容

  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 1,607评论 2 10
  • 本文章是老马jQuery视频的讲义和上课的代码。具体观看视频地址:https://chuanke.baidu.co...
    IT老马阅读 2,581评论 3 14
  • 鼠标事件 .click() 单击 .dbclick()双击 .click() 不带任何参数,一般用来指定触发一...
    学开船不会开船阅读 468评论 0 0
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,342评论 0 8
  • 生病的时候应该干什么? 去吃好吃的! 生气的时候应该干什么? 去吃好吃的! 伤心难过的时候应该干什么? 去吃好吃的...
    混混小花阅读 127评论 0 0