一、页面载入

  ready(fn)

    用法:

说明:当DOM载入就绪就可以查询及操纵时绑定一个要执行的函数,最为重要的函数,极大提高了web应用程序响应速度。    

    Demo:

1 //在DOM加载完成时运行的代码,可以这样写:
2 $(document).ready(function(){
3   // 在这里写你的代码...
4 });
5 
6 //简写
7 $(function($) {
8   // 你可以在这里继续使用$作为别名...
9 });

 

  注意$(function(){}) 与 window.onload = function(){} 区别

    1. 执行时机不同:

      ① jQuery 的页面加载完成之后是浏览器的内核解析完页面的标签创建好 DOM 对象后就执行,可能与 DOM 元素关联的东西并没有加载完

      ② 原生 js 的页面加载完成之后,除了要等浏览器内核解析完标签创建好 DOM 对象,还要等标签显示时需要的内容(如图片,音频视频等)加载完毕后才能执行;

    2.  触发的顺序

      ① jQuery 页面加载完成之后先执行;

      ② 原生 js 的页面加载完成后执行

    3. 执行的次数

      ① 原生 js 的页面加载完成之后,只会执行最后一次的赋值函数;

      ② jQuery 的页面加载完成之后是全部把注册的 function 函数,依次按照顺序全部执行;

二、事件处理

  1、on(eve,[sel],[data],fn)

    用法:

说明:在选择元素上绑定一个或多个事件的事件处理函数,自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品

注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)

     Demo:

 1 //给所有的段落绑定 单击 事件
 2 $("p").on("click", function(){
 3     alert( $(this).text() );
 4 });
 5 
 6 //也可以传递参数给函数赋值
 7 function myHandler(event) {
 8     alert(event.data.foo);
 9 }
10 $("p").on("click", {foo: "bar"}, myHandler)

 

  2、off(eve,[sel],[fn])

    语法:

说明:在选择元素上移除一个或多个事件的事件处理函数,自 jQuery 版本 1.7 起,off() 方法是 unbind()、die() 和 undelegate() 方法的新的替代品

注意:如需移除指定的事件处理程序,当事件处理程序被添加时,选择器字符串必须匹配 on() 方法传递的参数

    Demo:

1 // 移除段落上面的所有事件
2 $("p").off()
3 
4 //从所有段落中删除所有单击处理函数:
5 $("p").off( "click", "**" )

 

  3、bind(type,[data],fn)

    用法:

说明:为每个匹配的元素的特定事件绑定事件处理函数

    Demo:

 1 //当每个段落被点击时,弹出其文本
 2 $("p").bind("click", function(){
 3   alert( $(this).text() );
 4 });
 5 
 6 //bind多个事件,并判断分别是什么事件
 7 $("#areaDiv").bind("mouseover mouseout",function (event) {
 8     if (event.type == "mouseover") {
 9         console.log("鼠标移入");
10     } else if (event.type == "mouseout") {
11         console.log("鼠标移出");
12     }
13 });

 

  4、one(type,[data],fn)

    用法:

说明:为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。

注意:在每个对象上,这个事件处理函数只会被执行一次,这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为

    Demo:

1 //当所有段落被第一次点击的时候,显示所有其文本。
2 $("p").one("click", function(){
3   alert( $(this).text() );
4 });

 

  5、trigger(type,[data])

    用法:

说明:在每一个匹配的元素上触发某类事件以及事件的默认行为(比如表单提交)

注意:该方法与 triggerHandler() 方法类似,不同的是 triggerHandler() 不触发事件的默认行为

与 triggerHandler() 方法相比的不同之处:

  ① 它不会引起事件的(比如表单提交)的默认行为;

  ② trigger() 会操作 jQuery 对象匹配的所有元素,而 triggerHandler() 只影响第一个匹配元素;

  ③ 右 triggerHandler() 创建的事件不会在 DOM 树中冒泡;如果目标元素不直接处理它们,则不会发生任何事情

    Demo:

1 //提交第一个表单,但不用 submit()
2 $("form:first").trigger("submit")

 

  6、triggerHandle(type,[data])

    用法:

说明:该方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作,也不会产生事件冒泡

    Demo:

 1 //如果你对一个focus事件执行了 .triggerHandler() ,浏览器默认动作将不会被触发,只会触发你绑定的动作。
 2 
 3 //HTML代码
 4 <button id="old">.trigger("focus")</button>
 5 <button id="new">.triggerHandler("focus")</button><br/><br/>
 6 <input type="text" value="To Be Focused"/>
 7 //jQuery代码
 8 $("#old").click(function(){
 9   $("input").trigger("focus");
10 });
11 $("#new").click(function(){
12   $("input").triggerHandler("focus");
13 });
14 $("input").focus(function(){
15   $("<span>Focused!</span>").appendTo("body").fadeOut(1000);
16 });

 

  7、unbind(t,[d | f])

    用法:

说明:bind() 的反向操作,从每一个匹配的元素中删除绑定的事件。

参数:① 如果没有参数,则删除所有绑定的事件;

      ②  如果提供了事件类型作为参数,则只删除该类型的绑定事件;

    ③  如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

    Demo:

 1 //把所有段落的所有事件取消绑定
 2 $("p").unbind()
 3  
 4 //将段落的click事件取消绑定
 5 $("p").unbind( "click" )
 6 
 7 //删除特定函数的绑定,将函数作为第二个参数传入
 8 var foo = function () {
 9   // 处理某个事件的代码
10 };
11 
12 $("p").bind("click", foo); // ... 当点击段落的时候会触发 foo 
13 
14 $("p").unbind("click", foo); // ... 再也不会被触发 foo

 

三、事件委派

  1、live(type,[data],fn)

    用法:

说明:jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。

    Demo:

 1 //HTML代码
 2 <body>
 3   <div class="clickme">Click here</div>
 4 </body>
 5 
 6 //jQuery代码
 7 $('.clickme').live('click', function() {
 8   alert("Live handler called."); 
 9 });
10 
11 //新增元素,依然能够触发事件处理函数
12 $('body').append('<div class="clickme">Another target</div>');

 

  2、die(type,[fn])

    用法:

说明:从元素中删除先前用.live()绑定的所有事件.(此方法与live正好完全相反。)

参数:① 不带参数,则所有绑定的 live 事件都会被移除

   ② 提供了 type 参数,那么会移除对应的 live 事件

   ③ 指定了第二个参数 function,则只移除指定的事件处理函数

    Demo:

1 //给按钮解除 click 事件
2 function aClick() {
3       $("div").show().fadeOut("slow");
4   }
5   $("#unbind").click(function () {
6       $("#theone").die("click", aClick)
7   });

 

  3、delegate(s,[t],[d],fn)

    用法:

说明:指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

注意:使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)

    Demo:

 1 //当点击鼠标时,隐藏或显示 p 元素
 2 //HTML代码
 3 <div style="background-color:red">
 4 <p>这是一个段落。</p>
 5 <button>请点击这里</button>
 6 </div>
 7 //jQuery代码
 8 $("div").delegate("button","click",function(){
 9   $("p").slideToggle();
10 });

 

  4、undelegate([s,[t],fn])

    用法:

说明:删除由 delegate() 方法添加的一个或多个事件处理程序。

    Demo:

1 //从p元素删除由 delegate() 方法添加的所有事件处理器
2 $("p").undelegate();
3 
4 //从p元素删除由 delegate() 方法添加的所有click事件处理器
5 $("p").undelegate( "click" )

 

四、事件切换

  1、hover([over,]out)

    用法:

说明:当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。这是一个自定义的方法,它为频繁使用的任务提供了一种“保持在其中”的状态。

参数: ① over:鼠标移到元素上要触发的函数;

    ② out:鼠标移出元素要触发的函数;

    Demo:

 1 // 鼠标悬停的表格加上特定的类
 2 $("td").hover(
 3   function () {
 4     $(this).addClass("hover");
 5   },
 6   function () {
 7     $(this).removeClass("hover");
 8   }
 9 );
10 
11 //hover()方法通过绑定变量"handlerInOut"来切换方法。
12 $("td").bind("mouseenter mouseleave",handlerInOut);
13 $("td").hover(handlerInOut);

 

  2、toggle([spe],[eas],[fn])

    用法:

说明:用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件

    Demo:

 1 //对表格切换显示/隐藏
 2 $('td).toggle();
 3 
 4 //对表格的切换一个类
 5 $("td").toggle(
 6   function () {
 7     $(this).addClass("selected");
 8   },
 9   function () {
10     $(this).removeClass("selected");
11   }
12 );
13 
14 //用200毫秒将段落迅速切换显示状态,之后弹出一个对话框。
15 $("p").toggle("fast",function(){
16    alert("Animation Done.");
17  });

 

五、常用事件

  1、blur([[data],fn])

    用法:

格式: $("p").blur()           触发所有段落的 blur 事件

说明:当元素失去焦点时触发 blur 事件

  2、change([[data],fn])

    用法:

格式:$(selector).change()           触发被选元素的 change 事件

说明:当元素的值发生改变,并失去焦点时触发该事件。

注意:该事件仅适用于文本域(text field),以及 textarea 和 select 元素。当用于 select 元素时,change 事件会在选择某个选项时发生。当用于 text field 或 text area 时,该事件会在元素失去焦点时发生

  3、click([[data],fn])

    用法:

格式:$("p").click()            触发页面内所有段落的点击事件

说明:触发每一个匹配元素的单击事件

  4、dblclick([[data],fn])

    用法:

格式:$("p").dblclick()        触发页面所有段落的双击事件

说明:当双击元素时,会发生 dblclick 事件

  5、error([[data],fn])

    用法:

说明:当元素遇到错误(没有正确载入)时,发生 error事件

    Demo:

1 //隐藏无效的图像
2 $("img").error(function(){
3   $(this).hide();
4 });

 

  6、focus([[data],fn])

    用法:

说明:当元素获取焦点时,触发 focus 事件,可以通过鼠标点击或者键盘上的TAB导航触发。

    Demo:

1 //当页面加载后将 id 为 'login' 的元素设置焦点
2 $(document).ready(function(){
3   $("#login").focus();
4 });
5 
6 //使人无法使用文本框
7 $("input[type=text]").focus(function(){
8   this.blur();
9 });

 

  7、focusin([[data],fn])

    用法:

说明:当元素获得焦点时,触发 focusin 事件。focusin事件跟focus事件区别在于,他可以在父元素上检测子元素获取焦点的情况。

    Demo:

1 //获得焦点后会触发动画
2 //HTML代码
3 <p><input type="text" /> <span>focusout fire</span></p>
4 <p><input type="password" /> <span>focusout fire</span></p>
5 //jQuery
6 $("p").focusin(function() {
7   $(this).find("span").css('display','inline').fadeOut(1000);
8 });

 

  8、focusout([[data],fn])

    用法:

说明:当元素失去焦点时触发 focusout 事件。focusout事件跟blur事件区别在于,它可以在父元素上检测子元素失去焦点的情况

    Demo:

1 //失去焦点后会触发动画
2 //HTML代码
3 <p><input type="text" /> <span>focusout fire</span></p>
4 <p><input type="password" /> <span>focusout fire</span></p>
5 //jQuery代码
6 $("p").focusout(function() {
7   $(this).find("span").css('display','inline').fadeOut(1000);
8 });

 

  9、keydown()

    用法:

说明:当键盘或按钮被按下时,发生 keydown 事件。

注释:如果在文档元素上进行设置,则无论元素是否获得焦点,该事件都会发生。

    Demo:

 1 //在页面内对键盘按键做出回应
 2 $(window).keydown(function(event){
 3   switch(event.keyCode) {
 4     // ...
 5     // 不同的按键可以做不同的事情
 6     // 不同的浏览器的keycode不同
 7     // 更多详细信息:     http://unixpapa.com/js/key.html
 8     // ...
 9   }
10 });

 

  10、keypress()

    用法:

说明:当键盘或按钮被按下时,发生 keypress 事件。

注意:keypress 事件与 keydown 事件类似。当按钮被按下时,会发生该事件。它发生在当前获得焦点的元素上。 不过,与 keydown 事件不同,每插入一个字符,就会发生 keypress 事件。注释:如果在文档元素上进行设置,则无论元素是否获得焦点,该事件都会发生。

    Demo:

1 //计算在输入域中的按键次数
2 $("input").keydown(function(){  
3     $("span").text(i+=1);
4 });

 

  11、keyup()

    用法:

说明:当按钮被松开时,发生 keyup 事件。它发生在当前获得焦点的元素上。

注意:如果在文档元素上进行设置,则无论元素是否获得焦点,该事件都会发生

    Demo:

1 //当按下按键时,改变文本域的颜色
2 $("input").keyup(function(){
3   $("input").css("background-color","#D6D6FF");
4 });

 

  12、mousedown()

    用法:

说明:当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件

注意:mousedown 与 click 事件不同,mousedown 事件仅需要按键被按下,而不需要松开即可发生

    Demo:

1 //当按下鼠标按钮时,隐藏或显示元素
2 $("button").mousedown(function(){
3   $("p").slideToggle();
4 });

 

  13、mouseenter()

    用法:

说明:当鼠标指针穿过元素时,会发生 mouseenter 事件。该事件大多数时候会与mouseleave 事件一起使用

注意:与 mouseover 事件不同,只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。如果鼠标指针穿过任何子元素,同样会触发 mouseover 事件。

    Demo:

1 //当鼠标指针进入(穿过)元素时,改变元素的背景色
2 $("p").mouseenter(function(){
3   $("p").css("background-color","yellow");
4 });

 

  14、mouseleave()

    用法:

说明:当鼠标指针离开元素时,会发生 mouseleave 事件。该事件大多数时候会与mouseenter 事件一起使用

注意:与 mouseout 事件不同,只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。如果鼠标指针离开任何子元素,同样会触发 mouseout 事件

    Demo:

1 //当鼠标指针离开元素时,改变元素的背景色
2 $("p").mouseleave(function(){
3   $("p").css("background-color","#E9E9E4");
4 });

 

  15、mousemove()

    用法:

说明:当鼠标指针在指定的元素中移动时,就会发生 mousemove 事件

注意:mousemove事件处理函数会被传递一个变量——事件对象,其.clientX 和 .clientY 属性代表鼠标的坐标

    Demo:

1 //获得鼠标指针在页面中的位置
2 $(document).mousemove(function(e){
3   $("span").text(e.pageX + ", " + e.pageY);
4 });

 

  16、mouseout()

    用法:

说明:当鼠标指针从元素上移开时,发生 mouseout 事件,该事件大多数时候会与 mouseover 事件一起使用。

注意:与 mouseleave 事件不同,不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件

    Demo:

1 //当鼠标从元素上移开时,改变元素的背景色
2 $("p").mouseout(function(){
3   $("p").css("background-color","#E9E9E4");
4 });

 

  17、mouseover()

    用法:

说明:当鼠标指针位于元素上方时,会发生 mouseover 事件,该事件大多数时候会与 mouseout 事件一起使用

注意:与 mouseenter 事件不同,不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件

    Demo:

1 //当鼠标指针位于元素上方时时,改变元素的背景色
2 $("p").mouseover(function(){
3   $("p").css("background-color","yellow");
4 });

 

  18、mouseup()

    用法:

说明:当在元素上放松鼠标按钮时,会发生 mouseup 事件

注意:与 click 事件不同,mouseup 事件仅需要放松按钮。当鼠标指针位于元素上方时,放松鼠标按钮就会触发该事件

    Demo:

1 //当松开鼠标按钮时,隐藏或显示元素
2 $("button").mouseup(function(){
3   $("p").slideToggle();
4 });

 

  19、resize()

    用法:

说明:当调整浏览器窗口的大小时,发生 resize 事件

    Demo:

1 //每次改变页面窗口的大小时很郁闷的方法
2 $(window).resize(function(){
3   alert("Stop it!");
4 });

 

  20、scroll()

    用法:

说明:当用户滚动指定的元素时,会发生 scroll 事件

注意:scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口)。

    Demo:

1 //当页面滚动条变化时,执行的函数
2 $(window).scroll( function() { /* ...do something... */ } );
3 
4 //对元素滚动的次数进行计数
5 $("div").scroll(function() {
6   $("span").text(x+=1);
7 });

 

  21、select()

    用法:

说明:当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件

注意:这个函数会调用执行绑定到select事件的所有函数,包括浏览器的默认行为。可以通过在某个绑定的函数中返回false来防止触发浏览器的默认行为。

    Demo:

1 //触发所有input元素的select事件
2 $("input").select();
3 
4 //当文本框中文本被选中时执行的函数
5 $(":text").select( function () { /* ...do something... */ } );

 

  22、submit()

    用法:

说明:当提交表单时,会发生 submit 事件

注意:该事件只适用于表单元素

    Demo:

1 //提交第一个表单
2 $("form:first").submit();
3 
4 //阻止表单提交
5 $("form").submit( function () {
6   return false;
7 } );

 

  23、unload()

      用法:

说明:在当用户离开页面时,会发生 unload 事件。

以下几种情况,会发出 unload 事件:

    ①  点击某个离开页面的链接

    ②  在地址栏中输入了新的 URL

    ③  使用前进或后退按钮

    ④  关闭浏览器

    ⑤  重新加载页面    

    Demo:

1 //页面卸载的时候弹出一个警告框
2 $(window).unload( function () { alert("Bye now!"); } );

 

 

 六、事件冒泡

  1、事件冒泡概述

    事件冒泡:父子元素同时监听同一个事件,当触发子元素的事件的时候, 同一个事件也被传递到了父元素的事件里去
响应。 事件会按照 DOM 层次结构像水泡一样不断向上直至顶端。

  2、解决方法

    ① 在子元素事件函数体内,return false;可以阻止事件的冒泡传递;

    ② 获取事件对象,然后调用 event.stopPropagation()  方法,DOM 中停止事件传播的标准方法

 

 

posted on 2020-03-02 21:14  格物致知_Tony  阅读(189)  评论(0编辑  收藏  举报