这两种写法有啥区别吗?
1 2 3 4 5 6 7 | $( '.bind' ).click( function (){ $(document).on( 'click' , '.obj' ,flash); }) $( '.bind' ).click( function (){ $( '.obj' ).on( 'click' ,flash); }) |
两种写法有啥区别吗
16
收起
正在回答
2回答
同学,你好。
拿上一条回复中的代码例子为例,当html中目前有p标签的话,也就是上条回复中的代码那样的情况,直接给p添加事件和给父元素委托都是可以的,甚至直接添加会更简单。
但是为什么还要发明委托呢,在实际的工作中,很多元素都是从后台获取的,比如三个p标签,只是里面的内容不同,那么我们就可以通过js循环把p标签渲染到页面中,就不用写三遍p标签了,甚至有的时候你都不知道有几个p标签,那更不能一个一个写了。但是不管这三个p抱歉是通过js追加到div上的,还是直接写在html中的,我们都的给他太那几事件,假如我们直接给p添加事件,这个时候页面中是没有p标签的,所以我们选的话选不到,就会报错,通常这种情况下我们就会用这个事件委托的方式去做,就不会报错了。
如果帮助到了你,欢迎采纳!
祝学习愉快!
Miss路
2019-06-07 11:00:11
同学,你好。
on('click','.obj',flash);这种写法中间多了个参数,这个参数是个选择器,表示obj是bind的子元素,这个事件是给子元素添加的,这也叫事件委托,把自己的事件,委托给了父元素。
下面的没有obj选择器的就是给本身添加事件。
举个例子你试一下,不写aa,和写aa的区别,当不写aa的时候,只要点击框中的任何一个地方,都会弹出,写了aa之后,只有点击p标签才会弹出。
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 | <!DOCTYPE html> < html > < head > < style type = "text/css" > .p{ width: 500px; height: 500px; border: 1px solid red; } </ style > < script src = "https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" > </ script > < script > $(document).ready(function() { $(".p").on("click", ".aa",function() { alert("okok"); }); }); </ script > </ head > < body > < div class = "p" > < p class = "aa" >aaaaa</ p > < p class = "aa" >bbbbb</ p > < p class = "aa" >ccccc</ p > </ div > </ body > </ html > |
建议同学以后再遇到不懂的,可以通过写代码就能了解到的,就动手实现以下。
如果帮助到了你,欢迎采纳!
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧