Renyi-Fan

js进阶---12-11、jquery如何给动态创建出来的元素绑定事件

一、总结

一句话总结:通过事件委托的方式,通过on方法

 

1、on方法在事件绑定的时候,data方式带额外参数时,字符串参数和其它参数的使用不一样,为什么?

因为字符串参数默认会被当成动态生成元素的事件绑定方法,所以需要在前面添加参数null。

64         $(\'#btn1\').on(\'click\',null,\'div\',function(e){
65             alert(\'事件绑定\'+e.data)
66         })

对比一下额外参数的json对象

44 //额外数据
45     // $(\'#btn1\').on(\'click\',{name:\'张三\'},function(e){
46     //     alert(\'事件绑定\'+e.data.name)
47     // })

 

2、jquery如何给动态创建出来的元素绑定事件?

参数里面的第一个div是给动态生成的div绑定事件,第二个div是传递的额外参数。

59         $(document).on(\'click\',\'div\',\'div\',function(e){
60             alert(\'事件绑定\'+e.data)
61             $(this).css(\'background\',\'orange\')
62         })

 

3、on方法如何使用?

事件名字符串,函数或者函数名,

中间参数为动态绑定事件的元素,比如div,后面是传递的额外参数

59         $(document).on(\'click\',\'div\',\'div\',function(e){
60             alert(\'事件绑定\'+e.data)
61             $(this).css(\'background\',\'orange\')
62         })

 

 

 

二、jquery如何给动态创建出来的元素绑定事件

1、相关知识

  1. 事件绑定
    on() 为某些元素绑定一个事件或者多个事件。

    该函数可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。

  2. 事件解绑
    off() 解除绑定的某一指定的事件或者所有事件。

    “绑定”与“解绑”是相反的关系。在jQuery中,我们可以通过off()方法解除绑定的某一指定的事件或者所有事件。

    对同一元素绑定的多个同一事件进行解绑,可以使用命名空间解决,例如‘click.a’‘click.b’

  3. 事件委托
    通过事件冒泡,让子元素绑定的事件冒泡到父元素(或祖先元素)上,然后再进行处理。
 

 

2、代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <style>
 4 </style>
 5 <head>
 6     <meta charset="UTF-8">
 7     <title>演示文档</title>
 8     <script type="text/javascript" src="jquery-3.1.1.min.js"></script>
 9     <style type="text/css">
10         input{width: 100px;height: 30px;}
11         div{width: 50px;height: 50px;border:1px solid green;display: inline-block;margin-left: 15px}
12       </style>
13 </style>
14 </head>
15 <body>
16 <h3>jQuery事件对象</h3>
17 <input id="btn1" type="button" value="事件绑定"><br>
18 <div></div>
19 <script type="text/javascript">
20     $(function(){
21         /*    
22         $(\'#btn1\').on(\'click\',fn1)
23         $(\'#btn1\').on(\'click\',fn2)
24         function fn1(){
25             alert(\'事件绑定1\')
26         }
27         function fn2(){
28             alert(\'事件绑定2\')
29         }
30         $(\'#btn1\').off(\'click\',fn1)    
31         
32     //命名空间
33         $(\'#btn1\').on(\'click.a\',function(){
34             alert(\'事件绑定1\')
35         })
36         $(\'#btn1\').on(\'click.b\',function(){
37             alert(\'事件绑定2\')
38         })
39         $(\'#btn1\').on(\'mouseover.a\',function(){
40             $(this).css(\'background\',\'orange\')
41         })
42         $(\'#btn1\').off(\'.a\')
43 
44 //额外数据
45     // $(\'#btn1\').on(\'click\',{name:\'张三\'},function(e){
46     //     alert(\'事件绑定\'+e.data.name)
47     // })
48     $(\'#btn1\').on(\'click\',\'abc\',function(e){
49         alert(\'事件绑定\'+e.data)
50     })
51 
52     //动态绑定事件
53         $(\'#btn1\').on(\'click\',function(e){
54             $("<div></div>").appendTo($(\'body\'))
55         })
56         // $(\'div\').on(\'click\',function(){
57         //     $(this).css(\'background\',\'orange\')
58         // })
59         $(document).on(\'click\',\'div\',\'div\',function(e){
60             alert(\'事件绑定\'+e.data)
61             $(this).css(\'background\',\'orange\')
62         })
63 */
64         $(\'#btn1\').on(\'click\',null,\'div\',function(e){
65             alert(\'事件绑定\'+e.data)
66         })
67     })
68 </script>
69 </body>
70 </html>

 

 

 

 

分类:

技术点:

相关文章:

  • 2021-10-19
  • 2021-10-19
  • 2021-05-22
  • 2022-02-09
  • 2021-10-19
  • 2021-10-19
  • 2021-10-19
  • 2021-11-01
猜你喜欢
  • 2021-10-19
  • 2021-10-19
  • 2021-10-23
  • 2021-10-19
  • 2021-10-19
  • 2021-12-08
  • 2021-12-06
相关资源
相似解决方案