JavaScript和jQuery的事件

一、添加事件监听函数-JavaScript

1.元素标签里直接写js代码

<body onload="var i=1; alert(i);">
</body>

2.标签里写函数名

<head>
    <script>
      function hi(){
         alert("hi");
      }
    </script>
</head>
<body onload="hi();">
</body>

以上两种方式本质是一样的,被称为内联模式,效率最低。

3.js脚本里给事件属性指定函数

window.onload = hi;

这种方法称为传统模式,只能注册一个事件,再多会被覆盖。内联模式和传统模式都属于DOM Level 0事件模型,已经不被推荐。

4.不依赖元素属性的监听器

if(obj.addEventListener) {
     obj.addEventListener("click",clickFunc,false);
} else if(obj.attachEvent) {
     obj.attachEvent("onclick",clickFunc);
} else {
     obj.onclick = clickFunc;
}

这种方式属于DOM Level 2事件模型,可以注册多个事件处理函数,按注册顺序执行。

二、添加事件监听函数-jQuery

1.$(selector).event([data],callback)

2.$(selector).bind(event,[data],callback)

$(selector).unbind(event,callback)  不指定event将将移除该event上所有事件。

3.$(selector).one(event,[data],callback)  绑定事件只会触发一次。

4.$(selector).delegate(childElement,event,[data],callback) 委托给子元素(没理解透)

5.$(selector).on(event,[data],callback)  据说上面的方法都调用了它

三、事件传播

1.事件传播的顺序

  •   冒泡 div>body>html>document>window (IE5.5之前没有html)
  •   捕获和冒泡相反

IE只支持冒泡,非IE都支持。注册事件时,addEventListener第三个参数false时表示冒泡传播,true时捕获。element.onclick注册的和上面jQuery注册的都是冒泡传播。但并不是所有事件都支持和冒泡,如blur,focus,load,unload都不支持冒泡。

2.阻止事件传播

  • JavaScript方式
function stopEvent(evnt) {
     if(evnt.stopPropagation) {
           evnt.stopPropagation();
     }   else {
           evnt.cancleBubble = true;
     }
}
  • jQuery方式
 $(obj).bind(‘click‘,function(event){   //绑定事件
        //todo
        event.stopPropagation();   //阻止事件传播
 }); 

jQuery还有一个preventDefault方法,这个方法阻止了默认操作,如提交表单,打开连接,同时也阻止事件继续传播。

四、主动事件触发

  • element.click();
  • $(selector).trigger(event) 触发指定元素的某个事件

五、jQuery的其他几个事件

1.页加载触发ready()事件

ready:只要页面DOM结构加载后便触发,图片之类可以尚未加载完

onload:必须页面元素全部加载成功才触发,时间上晚于ready

$(document).ready(function(){}) 等价于$(function(){})

2.hover切换事件

$(selector).hover(in,out) 鼠标进入元素中触发in事件,移出元素触发out事件。

$(#div1).hover(
      function(){
           //鼠标进入元素做的事
      },
      function(){
           //鼠标移出元素做的事
      }
);

3.toggle点击切换函数

$(selector).toggle() 无参数时,点击元素实现切换显示隐藏

$("div").toggle();

$(selector).toggle(fn1,fn2,fn3,...) 参数是多于1个是函数,点击元素实现函数轮流调用,调用完最后函数后再调用首个函数。

 $("div").toggle(
      function(){alert(1);},
      function(){alert(2);},
      function(){alert(3);}
 );
时间: 2024-11-10 08:43:36

JavaScript和jQuery的事件的相关文章

javascript与jquery动态绑定事件需要先加载页面注意的坑

1.javascript的Dom对象动态事件绑定注意以下2点,如:document.getElementById("id名称").addListenerEvent("事件名称",function(){代码},false),动态绑定事件,事件名称不加on,如:click,mouseover等. (1)如果<script>绑定代码</script>写在<body>html代码</body>前面,则必须先使用加载页面语句wi

【javascript】jQuery判断用户右击事件

jquery 判断用户是鼠标是右击还是左击, // 1 = 鼠标左键 left; 2 = 鼠标中键; 3 = 鼠标右键 $(document).mousedown(function(e) { if(3 == e.which){ alert('这 是右键单击事件'); }else if(1 == e.which){ alert('这 是左键单击事件'); } }); [javascript]jQuery判断用户右击事件,布布扣,bubuko.com

JavaScript 事件托付 以及jQuery对事件托付的支持

在我的另外一篇文章 解析Javascript事件冒泡机制里的最后,从冒泡机制的角度谈了一点对Javascript 事件托付的理解.如今单独把事件托付 拿出来和大家探讨一下. 什么是托付? 所谓的托付,现实意义上讲是指将自己的事务嘱托他人代为处理.比方说甲托付乙去做某些事儿,那么,甲则是托付人,乙是被托付人. 真正做事情的是乙,即被托付人,而托付人甲 则是把对应的信息传递给被托付人乙.自己本该做的事情交给了乙来做.例如以下图这个样例: 那么在我们javascript 里,什么是事件托付呢? 事件托

JavaScript&amp;jQuery.键盘事件

键盘事件 键盘事件,当用户操作键盘时发生. 常见的键盘事件有: input,当<input>或<textarea>元素的值发生变化时触发. keydonw,当用户按下键盘上的任意键时触发. keypress,当用户按下键盘上一个键并在屏幕上反映一个字符时触发. keyup,当用户松开键盘上一个键时触发. <html> <head> <title>TODO supply a title</title> <meta charset=

JavaScript&amp;jQuery.HTML5事件

HTML5事件 事件 说明 DOMContentLoaded 在DOM树形成后触发(与此同时,图片.CSS和JavaScript可能还在加载).在这个事件中,脚本运行要早于load事件,因为load事件会等待所有资源(比如图片或广告)加载完之后才触发.这种方式会让页面看起来加载速度更快. hashchange 当URL的hash值变化时(不会造成整个窗口刷新)触发.hash值通常在链接中用来指定不同的部分(也被称作为锚点),在使用AJAX加载的页面内容中也会被使用. beforeunload 当

JavaScript&amp;jQuery.DOM事件

DOM事件 在JavaScript中常见的事件有: UI事件,当与浏览器UI本身(而不是网页)交互时发生的事件. 鼠标事件,当用户操作鼠标.触控板.或触摸屏幕时发生. 键盘事件,当用户操作键盘时发生. 焦点事件,当一个元素(比如链接或表单)得到或失去焦点时发生. 表单事件,当用户与表单元素进行交互时发生. 变动事件,当用户修改了DOM结构(添加或删除元素节点)后发生. DOM事件如何触发javaScript代码 对象有属性.方法.事件 本质上他们是同一个东西:属性=方法=事件. 事件->方法->

【JavaScript】jQuery Ajax 实例 全解析

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到). 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. url (String) :

Jquery之事件绑定(bind(),live(),delegate(),on())

1..bind() 描述: 为一个元素绑定一个事件处理程序. .bind()一个基本的用法: $(selector).bind('click', function() { alert('User clicked on "foo."'); }); 可以直接用原生js替代为: $(selector).click( function() { alert('User clicked on "foo."'); }); 在jQuery1.4.3,您现在可以通过传递false代替

为什么原生 JavaScript 开发越来越多受欢迎?是否应该跟风用原生JavaScript代替 jQuery等库?

本文标签:  jQuery的作用 原生JavaScript优势 jQuery官网 jQuery处理DOM和跨浏览器 JavaScript新特性 互联网杂谈 随着 JavaScript 本身的完善,越来越多的人开始喜欢使用原生 JavaScript 开发代替各种库,其中不少人发出了用原生 JavaScript 代替 jQuery 的声音.这并不是什么坏事,但也不见得就是好事.如果你真的想把 jQuery从前端依赖库中移除掉,我建议你慎重考虑. 首先 jQuery 是一个第三方库.库存在的价值之一在