javascript代码实例教程-浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式

发布时间:2019-01-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。  因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该文章日后能帮助到园友,文中如有不当之处,还望各位指正,话不多说,直接进入正题。

 

bind()

简要描述

 

  bind()向匹配元素添加一个或多个事件处理器。

 

使用方式

 

  $(selector).bind(event,data,function)

 

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

 

          单事件处理:例如 $(selector).bind("click",data,function);

 

          多事件处理:1.利用空格分隔多事件,例如 $(selector).bind("click dbclick mouseout",data,function);

 

                2.利用大括号灵活定义多事件,例如 $(selector).bind({event1:function, event2:function, ...}) 

 

                3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

 

                 大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;     

 

  data:可选;需要传递的参数;

 

  function:必需;当绑定事件发生时,需要执行的函数;

 

举例说明

 1 <htML XMlns="http://www.w3.org/1999/xhtml">

 2 <head>

 3     <tITle>jquery中bind()绑定事件方式</title>

 4     <style tyPE="text/css">

 5         .container

 6         {

 7             width: 300px;

 8             height: 300px;

 9             border: 1px #ccc solid;

10             background-color: Green;

11         }

12         .BTn-test

13         {

14             border: 1px #ccc solid;

15             padding: 5px 15px;

16             cursor: pointer;

17         }

18     </style>

19     <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>

20     <script type="text/javascript">

21         $(function () {

22 

23             /*********添加单个事件处理*********/

24 

25             $(".btn-test").bind("click", function () {

26                 //显示隐藏p

27                 $(".container").slideToggle();

28             });

29 

30             /********添加多个事件处理********/

31 

32             //空格相隔方式

33             $(".btn-test").bind(";mouseout click", function () {

34                 //显示隐藏p

35                 $(".container").slideToggle();

36             });

37 

38             //大括号替代方式

39             $(".btn-test").bind({

40                 "mouseout": function () {

41                     alert("这是mouseout事件!");

42                 },

43                 "click": function () {

44                     $(".container").slideToggle();

45                 }

46             });

47 

48             /********删除事件处理********/

49             $(".btn-test").unbind("click");

50 

51         });

52     </script>

53 </head>

54 <body>

55     <input type="button" value="按钮" class="btn-test" />

56     <p class="container">

57     </p>

58 </body>

59 </html>

复制代码

适用Jquery版本

 

  适用所有版本,但是根据官网解释,自从jquery1.7版本以后bind()函数推荐用On()来代替。

 

live()

简要描述

 

  live() 向当前或未来的匹配元素添加一个或多个事件处理器

 

使用方式

 

  $(selector).live(event,data,function)

 

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

 

      单事件处理:例如 $(selector).live("click",data,function);

 

      多事件处理:1.利用空格分隔多事件,例如 $(selector).live("click dbclick mouseout",data,function);

 

            2.利用大括号灵活定义多事件,例如 $(selector).live({event1:function, event2:function, ...}) 

 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

 

               大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;     

 

  data:可选;需要传递的参数;

 

  function:必需;当绑定事件发生时,需要执行的函数;

 

举例说明

 

 

复制代码

 1 <html xmlns="http://www.w3.org/1999/xhtml">

 2 <head>

 3     <title>jquery中live()绑定事件方式</title>

 4     <style type="text/css">

 5         .container

 6         {

 7             width: 300px;

 8             height: 300px;

 9             border: 1px #ccc solid;

10             background-color: Green;

11         }

12         .btn-test

13         {

14             border: 1px #ccc solid;

15             padding: 5px 15px;

16             cursor: pointer;

17         }

18     </style>

19     <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>

20     <script type="text/javascript">

21         $(function () {

22 

23             /*********添加单个事件处理*********/

24 

25             $(".btn-test").live("click", function () {

26                 //显示隐藏p

27                 $(".container").slideToggle();

28             });

29 

30             

31             /********添加多个事件处理********/

32 

33             //空格相隔方式

34             $(".btn-test").live("mouseout click", function () {

35                 //显示隐藏p

36                 $(".container").slideToggle();

37             });

38 

39             //大括号替代方式

40             $(".btn-test").live({

41                 "mouseout": function () {

42                     alert("这是mouseout事件!");

43                 },

44                 "click": function () {

45                     $(".container").slideToggle();

46                 }

47             });

48 

49             /********删除事件处理********/

50             $(".btn-test").die("click");

51             

52         });

53     </script>

54 </head>

55 <body>

56     <input type="button" value="按钮" class="btn-test" />

57     <p class="container">

58     </p>

59 </body>

60 </html>

复制代码

适用Jquery版本

 

  jquery1.9版本以下支持,jquery1.9及其以上版本删除了此方法,jquery1.9以上版本用on()方法来代替。

 

delegate()

简要描述

 

  delegate() 为指定的元素(被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。

 

使用方式 

 

  $(selector).delegate(childSelector,event,data,function)

 

  childSelector: 必需项;需要添加事件处理程序的元素,一般为selector的子元素;

 

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

 

      单事件处理:例如 $(selector).delegate(childselector,"click",data,function);

 

      多事件处理:1.利用空格分隔多事件,例如 $(selector).delegate(childselector,"click dbclick mouseout",data,function);

 

            2.利用大括号灵活定义多事件,例如 $(selector).delegate(childselector,{event1:function, event2:function, ...}) 

 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

 

               大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;     

 

  data:可选;需要传递的参数;

 

  function:必需;当绑定事件发生时,需要执行的函数;

 

举例说明

 

 

复制代码

 1 <html xmlns="http://www.w3.org/1999/xhtml">

 2 <head>

 3     <title>jquery中delegate()绑定事件方式</title>

 4     <style type="text/css">

 5         .container

 6         {

 7             width: 300px;

 8             height: 300px;

 9             border: 1px #ccc solid;

10             background-color: Green;

11         }

12         .btn-test

13         {

14             border: 1px #ccc solid;

15             padding: 5px 15px;

16             cursor: pointer;

17         }

18     </style>

19     <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>

20     <script type="text/javascript">

21         $(function () {

22 

23             /***********单元素添加单事件***********/

24 

25             //按钮绑定单击事件 实现p的显示隐藏

26             $(".header").delegate("#btn-test1", "click", function () {

27                 $(".container").slideToggle();

28             });

29 

30 

31             /***********单元素添加多事件***********/

32 

33             //空格相隔方式

34             $(".header").delegate("#btn-test1", "click mouseout", function () {

35                 $(".container").slideToggle();

36             });

37 

38             //大括号替代方式

39             $(".header").delegate("#btn-test1", {

40                 "mouseout": function () {

41                     alert("这是mouseout事件!");

42                 },

43                 "click": function () {

44                     $(".container").slideToggle();

45                 }

46             });

47 

48 

49         });

50     </script>

51 </head>

52 <body>

53     <p class="header">

54         <input type="button" value="按钮1" class="btn-test" id="btn-test1" />

55         <input type="button" value="按钮2" class="btn-test" id="btn-test2" />

56     </p>

57     <p class="container">

58     </p>

59 </body>

60 </html>

复制代码

适用Jquery版本

 

  jquery1.4.2及其以上版本;

 

on()

简要描述

 

  on() 为指定的元素,添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用 on() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。

 

使用方式 

 

  $(selector).on(event,childselector,data,function)

 

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

 

      单事件处理:例如 $(selector).on("click",childselector,data,function);

 

      多事件处理:1.利用空格分隔多事件,例如 $(selector).on("click dbclick mouseout",childseletor,data,function);

 

            2.利用大括号灵活定义多事件,例如 $(selector).on({event1:function, event2:function, ...},childselector); 

 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

 

               大括号替代方式:绑定较为灵活,可以给事件单独绑定函数; 

 

  childSelector: 可选;需要添加事件处理程序的元素,一般为selector的子元素;    

 

  data:可选;需要传递的参数;

 

  function:必需;当绑定事件发生时,需要执行的函数;

 

举例说明

 

 

复制代码

 1 <html xmlns="http://www.w3.org/1999/xhtml">

 2 <head>

 3     <title>jquery中on()绑定事件方式</title>

 4     <style type="text/css">

 5         .container

 6         {

 7             width: 300px;

 8             height: 300px;

 9             border: 1px #ccc solid;

10             background-color: Green;

11         }

12         .btn-test

13         {

14             border: 1px #ccc solid;

15             padding: 5px 15px;

16             cursor: pointer;

17         }

18     </style>

19     <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>

20     <script type="text/javascript">

21         $(function () {

22 

23             /*********添加单个事件处理*********/

24 

25             $(".header").on("click", ".btn-test", function () {

26                 //显示隐藏p

27                 $(".container").slideToggle();

28             });

29 

30             /********添加多个事件处理********/

31 

32             //空格相隔方式

33             $(".header").on("mouseout click", ".btn-test", function () {

34                 //显示隐藏p

35                 $(".container").slideToggle();

36             });

37 

38             //大括号替代方式

39             $(".header").on({

40                 "mouseout": function () {

41                     alert("这是mouseout事件!");

42                 },

43                 "click": function () {

44                     $(".container").slideToggle();

45                 }

46             }, ".btn-test");

47 

48             //删除事件

49             $(".header").off("click", ".btn-test");

50 

51         });

52     </script>

53 </head>

54 <body>

55     <p class="header">

56         <input type="button" value="按钮" class="btn-test" />

57     </p>

58     <p class="container">

59     </p>

60 </body>

61 </html>

复制代码

适用Jquery版本

 

  jquery1.7及其以上版本;jquery1.7版本出现之后用于替代bind(),live()绑定事件方式;

 

四种方式的异同和优缺点

相同点:

 

  1.都支持单元素多事件的绑定;空格相隔方式或者大括号替代方式;

 

  2.均是通过事件冒泡方式,将事件传递到document进行事件的响应;

 

比较和联系:

 

 

 

1.bind()函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均支持未来新添加元素的事件设置;演示代码如下:

 

 

复制代码

 1 <html xmlns="http://www.w3.org/1999/xhtml">

 2 <head>

 3     <title>jquery中四种方式给未来元素设置事件</title>

 4     <style type="text/css">

 5         .container

 6         {

 7             width: 300px;

 8             height: 300px;

 9             border: 1px #ccc solid;

10             background-color: Green;

11         }

12         .btn-test

13         {

14             border: 1px #ccc solid;

15             padding: 5px 15px;

16             cursor: pointer;

17         }

18     </style>

19     <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>

20     <script type="text/javascript">

21         $(function () {

22 

23             //利用bind()方法,给p标签设置click方法   ======失败 没有任何反应=======

24             $(".container p").bind("click", function () {

25                 alert("bind()添加单击事件成功!");

26             });

27 

28             //利用live()方法.给P标签设置click方法   =======成功调用方法============

29             $(".container p").live("click", function () {

30                 alert("live()添加单击事件成功!");

31             });

32 

33             //利用delegate()方法.给P标签设置click方法  =======成功调用方法============

34             $(".container").delegate("p", "click", function () {

35                 //显示隐藏p

36                 alert("delegate()添加单击事件成功!");

37             });

38 

39             //利用on()方法.给P标签设置click方法  =======成功调用方法============

40             $(".container").on("click", "p", function () {

41                 //显示隐藏p

42                 alert("on()添加单击事件成功!");

43             });

44 

45             //按钮添加P标签

46             $(".btn-test").click(function () {

47                 $(".container").append("<p>这是新增的段落!</p>");

48             });

49         });

50     </script>

51 </head>

52 <body>

53     <input type="button" class="btn-test" value="添加元素" />

54     <p class="container">

55     </p>

56 </body>

57 </html>

复制代码

 

 

2.bind()函数在jquery1.7版本以前比较受推崇,1.7版本出来之后,官方已经不推荐用bind(),替代函数为on(),这也是1.7版本新添加的函数,同样,可以

 

 用来代替live()函数,live()函数在1.9版本已经删除;

 

 

 

3.live()函数和delegate()函数两者类似,但是live()函数在执行速度,灵活性和CSS选择器支持方面较delegate()差些,想了解具体情况,请戳这:

 

 http://kb.cnblogs.COM/page/94469/

 

 

 

4.bind()支持Jquery所有版本;live()支持jquery1.8-;delegate()支持jquery1.4.2+;on()支持jquery1.7+; 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式全部内容,希望文章能够帮你解决javascript代码实例教程-浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。