我是靠谱客的博主 默默哈密瓜,这篇文章主要介绍jquery的on()方法总结,现在分享给大家,希望可以做个参考。

摘自菜鸟教程 废话不说 直接上demo

实例:

向<p>元素添加click事件处理程序:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1 <html> 2 <head> 3 <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"> 4 </script> 5 <script> 6 $(document).ready(function(){ 7 $("p").on("click",function(){ 8 alert("段落被点击了。"); 9 }); 10 }); 11 </script> 12 </head> 13 <body> 14 15 <p>点击这个段落。</p> 16 17 </body> 18 </html>

运行结果:

1195007-20170921130421712-386348138.png

定义和用法:

1. on() 方法在被选元素及其子元素上添加一个或多个 事件处理程序

2.自jquery1.7版本之后 on()方法是bind() live() delegate() 方法新的替代品 推荐使用此方法!使用其他的方法可能会出现不兼容的问题

3.使用on()方法添加的事件程序适用于当前未来的程序(这里的未来的程序是脚本创建新元素,或者是以前的事件代理程序)

4. 如果要移除使用on()方法添加的事件处理程序 请使用与之对应的off()方法

5.如果你想事件执行一次就移除请使用one()方法

6.on()方法支持自定义事件

语法:

$(selector).on(event, childSelector,data,function);

参数说明:

event 必须  事件的名称(可以自定义) 支持绑定多个事件 多个事件用空格分开 也可以是map参数和数组

childSelector 可选 添加事件程序的子元素而且不是父选择器本身

data  可选 传递到事件对象 event的额外的参数

function 必选 规定事件发生时运行的函数

实例分析:

bind()改为on() 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html> <html> <head> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("#div1").on("click",function(){ $(this).css("background-color","pink"); }); $("#div2").bind("click",function(){ $(this).css("background-color","pink"); }); }); </script> </head> <body> <h4 style="color:green;">This example demonstrates how to achieve the same effect using on() and bind().</h4> <div id="div1" style="border:1px solid black;">This is some text. <p>Click to set background color using the <b>on() method</b>.</p> </div><br> <div id="div2" style="border:1px solid black;">This is some text. <p>Click to set background color using the <b>bind() method</b>.</p> </div> </body> </html>

运行结果:

1195007-20170921131916868-2090170165.png

运行结果2:

 

1195007-20170921132011946-782475779.png

从delegate()改为on()

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> 5 </script> 6 <script> 7 $(document).ready(function(){ 8 $("#div1").on("click","p",function(){ 9 $(this).css("background-color","pink"); 10 }); 11 $("#div2").delegate("p","click",function(){ 12 $(this).css("background-color","pink"); 13 }); 14 }); 15 </script> 16 </head> 17 <body> 18 19 <h4 style="color:green;">This example demonstrates how to achieve the same effect using on() and delegate().</h4> 20 21 <div id="div1"> 22 <p>Click to set background color using the <b>on() method</b>.</p> 23 </div> 24 25 <div id="div2"> 26 <p>Click to set background color using the <b>delegate() method</b>.</p> 27 </div> 28 29 </body> 30 </html>

运行结果:

1195007-20170921132234306-1928012157.png

从live改为on

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <script src="https://apps.bdimg.com/libs/jquery/1.7.0/jquery.js"> 6 </script> 7 <script> 8 $(document).ready(function(){ 9 $("#div1").on("click",function(){ 10 $(this).css("background-color","pink"); 11 }); 12 $("#div2").live("click",function(){ 13 $(this).css("background-color","pink"); 14 }); 15 }); 16 </script> 17 </head> 18 <body> 19 20 <h4 style="color:green;">该实例演示了如何使用 on() 和 live()。</h4> 21 22 <div id="div1" style="border:1px solid black;">这是一些文本。 23 <p>点击此处,使用 <b>on() 方法来设置背景颜色</b>。</p> 24 </div><br> 25 26 <div id="div2" style="border:1px solid black;">这是一些文本。 27 <p>点击此处,使用 <b>live() 方法来设置背景颜色</b>。</p> 28 </div> 29 <p><b>注意:</b>live() 方法在 jQuery 版本 1.7 中被废弃,在版本 1.9 中被移除。请使用 on() 方法代替。</p> 30 </body> 31 </html>

运行结果:

1195007-20170921132427853-16187338.png

添加多个事件处理程序

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> 5 </script> 6 <script> 7 $(document).ready(function(){ 8 $("p").on("mouseover mouseout",function(){ 9 $("p").toggleClass("intro"); 10 }); 11 }); 12 </script> 13 <style type="text/css"> 14 .intro 15 { 16 font-size:150%; 17 color:red; 18 } 19 </style> 20 </head> 21 <body> 22 23 <p>Move the mouse pointer over this paragraph.</p> 24 25 </body> 26 </html>

1195007-20170921132553509-1636792477.png

注意:toggleClass()方法是切换css class样式的方法! 这个可以对比学习addClass 和removeClass 

使用map参数添加多个事件程序

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> 5 </script> 6 <script> 7 $(document).ready(function(){ 8 $("p").on({ 9 mouseover:function(){$("body").css("background-color","lightgray");}, 10 mouseout:function(){$("body").css("background-color","lightblue");}, 11 click:function(){$("body").css("background-color","yellow");} 12 }); 13 }); 14 </script> 15 </head> 16 <body> 17 18 <p>Click or move the mouse pointer over this paragraph.</p> 19 20 </body> 21 </html>

运行结果

 1195007-20170921132933493-1072422762.png

1195007-20170921132946587-1423187758.png

1195007-20170921133001462-547158175.png

 

 在元素上添加自定义事件:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> 5 </script> 6 <script> 7 $(document).ready(function(){ 8 $("p").on("myOwnEvent", function(event, showName){ 9 $(this).text(showName + "! What a beautiful name!").show(); 10 }); 11 $("button").click(function(){ 12 $("p").trigger("myOwnEvent",["Anja"]); 13 }); 14 }); 15 </script> 16 </head> 17 <body> 18 19 <button>Trigger custom event</button> 20 <p>Click the button to attach a customized event on this p element.</p> 21 22 </body> 23 </html>

运行结果:

1195007-20170921133136540-587594381.png

 

 

 Tip:上述代码的myOwnEvent是自定义的方法的名称

trigger是绑定自定义事件的意思

 

向函数中添加数据

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> 5 </script> 6 <script> 7 function handlerName(event) 8 { 9 alert(event.data.msg); 10 } 11 12 $(document).ready(function(){ 13 $("p").on("click", {msg: "You just clicked me!"}, handlerName) 14 }); 15 </script> 16 </head> 17 <body> 18 19 <p>Click me!</p> 20 21 </body> 22 </html>

显示结果:

1195007-20170921133512400-17130560.png

注意添加的数据是以event的data属性添加的

向未来的数据(脚本创建的元素)添加事件:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> 5 </script> 6 <script> 7 $(document).ready(function(){ 8 $("div").on("click","p",function(){ 9 $(this).slideToggle(); 10 }); 11 $("button").click(function(){ 12 $("<p>This is a new paragraph.</p>").insertAfter("button"); 13 }); 14 }); 15 </script> 16 </head> 17 <body> 18 19 <div style="background-color:yellow"> 20 <p>This is a paragraph.</p> 21 <p>Click any p element to make it disappear. Including this one.</p> 22 <button>Insert a new p element after this button</button> 23 </div> 24 25 </body> 26 </html>

1195007-20170921133713400-984600037.png

1195007-20170921133735306-293723971.png

提示 slideToggle()是折叠代码  详情可以参考jquery文档

如何使用off()方法移除事件处理程序

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>菜鸟教程(runoob.com)</title> 6 <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> 7 </script> 8 <script> 9 $(document).ready(function(){ 10 $("p").on("click",function(){ 11 $(this).css("background-color","pink"); 12 }); 13 $("button").click(function(){ 14 $("p").off("click"); 15 }); 16 }); 17 </script> 18 </head> 19 <body> 20 21 <p>点击这个段落修改它的背景颜色。</p> 22 <p>点击一下按钮再点击这个段落( click 事件被移除 )。</p> 23 24 <button>移除 click 事件句柄</button> 25 26 </body> 27 </html>

运行的结果:

1195007-20170921134142025-1135656966.png

欢迎补充和留言

 

最后

以上就是默默哈密瓜最近收集整理的关于jquery的on()方法总结的全部内容,更多相关jquery内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部